我正在建立一个具有相当复杂SQL
数据库的网站。
我创建了一个Query
类,它包含多个原始字段(都可以正常工作)以及多个List<SomeType>
. 也在我的解决方案SomeType
的文件夹下定义。Models
它还包含SomeType
. 然后,我创建了一个QueryDBContext
继承DbContext
.
我有一个Generate
函数,它接收一个字符串并创建一个完整的Query
实例。如果我立即将它发送到我的View
- 它工作正常。但是,如果我将它存储在 my 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
删除和重建每次修改的数据库。我也尝试List
用IList
.
如果 EF 不支持引用类型,我该怎么办?它会起作用structs
吗?如何存储Lists
在数据库条目中?(是的,我可以用它的 ID 将它存储在另一个表中 - 但我相信 EF 对此有更优雅的解决方案)