我写了这样的课:
class Test
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public List<String> Strings { get; set; }
public Test()
{
Strings = new List<string>
{
"test",
"test2",
"test3",
"test4"
};
}
}
Run Code Online (Sandbox Code Playgroud)
和
internal class DataContext : DbContext
{
public DbSet<Test> Tests { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
运行代码后:
var db = new DataContext();
db.Tests.Add(new Test());
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我的数据正在保存但只是保存Id.我没有任何表格,也没有适用于字符串列表的关系.
我究竟做错了什么?我也尝试制作字符串, virtual但它没有改变任何东西.
谢谢您的帮助.
假设我有一个EF实体类Person,上面有一个PhoneNumber。PhoneNumber以字符串类型存储,但是我希望对Person的所有访问都通过Phone进行,Phone具有一些不错的访问器功能,例如验证或GetAreaCode()。我想将它作为字符串备份在数据库中,但是当查询它时,我想将其作为PhoneNumber返回:
public class Person {
public PhoneNumber Phone { /* Some clever get/set logic here */ }
private string _phoneNumber; // Backing field
}
Run Code Online (Sandbox Code Playgroud)
还是可以让PhoneNumber将自身存储为字符串?如果我只是通过删除上面的后备字段将其包括在模型中,则EF会被构造函数(一个受保护的ctor,具有比一个字符串多的args)和一个副本ctor混淆PhoneNumber(PhoneNumber other)。我可以让EF以某种方式忽略这些吗?
我愿意接受...