tôi có 2 lớp đơn giản:Entity bất động sản chuyển hướng khung là null
public class Setting
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid SettingId { get; set; }
[Required]
public String Name { get; set; }
public String Value { get; set; }
[Required]
public SettingCategory SettingCategory { get; set; }
}
public class SettingCategory
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid SettingCategoryId { get; set; }
[Required]
public String Value { get; set; }
public ICollection<Setting> Settings { get; set; }
}
Khi tôi lấy một SettingCategory
từ cơ sở dữ liệu Cài đặt bộ sưu tập luôn là null.
Khi tôi làm cho nó một virtual
sau đó nó sẽ nói: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
Làm thế nào tôi có thể truy cập danh sách Settings
của tôi?
Cách khác xung quanh công trình, nếu tôi truy xuất số Setting
từ cơ sở dữ liệu, thuộc tính SettingCategory
sẽ được lấp đầy.
Đây là mã di cư ban đầu của tôi kịch bản:
CreateTable(
"dbo.Settings",
c => new
{
SettingId = c.Guid(nullable: false, identity: true),
Name = c.String(nullable: false),
Value = c.String(),
SettingCategory_SettingCategoryId = c.Guid(nullable: false),
})
.PrimaryKey(t => t.SettingId)
.ForeignKey("dbo.SettingCategories", t => t.SettingCategory_SettingCategoryId, cascadeDelete: true)
.Index(t => t.SettingCategory_SettingCategoryId);
CreateTable(
"dbo.SettingCategories",
c => new
{
SettingCategoryId = c.Guid(nullable: false, identity: true),
Value = c.String(nullable: false),
})
.PrimaryKey(t => t.SettingCategoryId);
Và đây là phần mà được nó ra khỏi cơ sở dữ liệu:
public SettingCategory Get(Guid settingCategoryId)
{
using (var context = new BackofficeContext())
{
return context
.SettingCategories
.FirstOrDefault(s => s.SettingCategoryId == settingCategoryId);
}
}
trả lời
tôi quên bao gồm trong .SettingCategories
, nhưng tôi đã thử nó với một lambda:
public SettingCategory Get(Guid settingCategoryId)
{
using (var context = new BackofficeContext())
{
return context
.SettingCategories
.Include(s => s.Settings)
.FirstOrDefault(s => s.SettingCategoryId == settingCategoryId);
}
}
Điều đó không làm việc, nhưng điều này không:
public SettingCategory Get(Guid settingCategoryId)
{
using (var context = new BackofficeContext())
{
return context
.SettingCategories
.Include("Settings")
.FirstOrDefault(s => s.SettingCategoryId == settingCategoryId);
}
}
Điều này thật lạ. Bạn có thể cho biết bạn đang truy xuất SettingCategory như thế nào? – Anri
Bạn có chắc là bạn có Cài đặt liên quan trong cơ sở dữ liệu của mình không? – Anri
Tôi đang sử dụng Mã đầu tiên với di chuyển để nó có thể làm mọi thứ đúng không? Tôi đã thêm tập lệnh Ban đầu. – YesMan85