我正在建立一个网站,其中有一个相当复杂的SQL
数据库。
我做了一个Query
类,其中包含多个原始字段(它们都可以正常工作)并且还有多个List<SomeType>
。 SomeType
也在我的解决方案的Models
文件夹下定义。它也持有SomeType
的单个实例。然后,我做了一个QueryDBContext
类继承DbContext
。
实体框架5与MVC4
我有一个Generate
函数,它接收一个字符串并创建一个完全形成的Query
实例。如果我立即将它发送到我的View
- 它工作正常。但是,如果我将它存储在我的DB
中 - 只保留原始值,并且参考类型(Lists<SomeType>
和SomeType
)都是null
。
我认为问题是EF不支持引用类型 - 或者我可能需要一些特殊的情况?
这里的Query
public class Query
{
[Key]
public int id { get; set; }
public SomeType Base { get; set; }
public List<SomeType> Derived { get; set; }
//more of these
public string SmallGraphImage { get; set; }
public string MediumGraphImage { get; set; }
public string LargeGraphImage { get; set; }
}
public class QueriesDBContext : DbContext
{
public DbSet<Query> Queries { get; set; }
}
这里的SomeType
public class SomeType
{
[Key]
public int id { get; set; }
public string ExpandedOutForm { get; set; }
public string ExpandedInForm { get; set; }
//more strings
}
注意:数据库工作正常,原语。为了开发目的,我做了一个Controller
,它删除了&为每次修改重建数据库。我也试着用IList
替换List
。
如果EF不支持引用类型,我该怎么办?它会在structs
上运行吗?如何将Lists
存储在数据库条目中? (是的,我可以把它存储在其ID另一个表 - 但我相信,英孚已经为这个更好的解决方案)
您不能在数据库字段中存储列表。数据库字段可以包含一个值,但不包含值的数组。如果您需要引用父项中的一组值,那么您基本上正在讨论具有一对多引用。 –
那么,我该如何做一对多的参考? –