有什么方法只能允许Entity Framework类写入/读取EmailJson
属性吗?代码无需使用此代码即可工作,但是如果任何代码都无法更改此属性,则它会更加干净,因为其中包含无效的json会引发异常。
由于通用要求,我无法使用后备属性。
public class EmailEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public string EmailJson { get; set; }
public T GetEmail<T>() where T : BaseEmailModel
{
return JsonConvert.DeserializeObject<T>(EmailJson);
}
public void GetEmail<T>(T emailModel) where T : BaseEmailModel
{
EmailJson = JsonConvert.SerializeObject(emailModel);
}
}
答案 0 :(得分:1)
我建议使用单独的数据访问层(例如,类“ EmailEntityService”)来负责对EmailEntity的所有访问。然后,整个解决方案中的所有代码都应仅使用此服务。如果将EmailEntity移至单独的项目,则可以确保只能通过EmailEntityService对其进行访问(如果您将该服务保留在引用“实体项目”的项目中)。
所以最后,您至少有三个项目:
1:实体项目
2:实体服务项目(参考1,该项目可确保不能直接更改实体)
3:业务逻辑项目(引用2而不引用1以防止直接访问实体)
由于实体类只是POCO,因此我看不到有其他任何可能性可以以更具技术性/基本的方式做到这一点。