有没有办法让只读字段或没有setter的属性映射到具有Entity Framework Code First的数据库列?
我发现两者都被忽略了,例如:
using System;
namespace App.Model
{
public class Person
{
string _address1; // Private Field to back the Address Property
public string Address1 // Public Property without a Setter
{
get { return _address1; }
}
public readonly string Address2; // Public Read Only Field
}
}
是否有Fluent API调用或其他方法来完成?
答案 0 :(得分:5)
没有办法让实体真正不可变,但你可以使用一个无法访问的setter来阻止用户修改它们,这可能已经足够好了,具体取决于你的情况:
public string Address1 // Public Property without a Setter
{
get { return _address1; }
internal set { _address1 = value; }
}
实体框架仍然可以设置值,因此它将正确加载,但一旦创建,该属性将或多或少地固定。
(我建议使用internal
而不是private
setter,这样您仍然可以在上下文或配置类中使用Fluent API进行映射,前提是它们位于同一个程序集中,或朋友大会。)