我正在研究一些传统的nHibernte代码,该公司已决定迁移到EF。我已经使用公式映射找到了流畅的映射,并希望在EF(6. *)中复制它。据我所知,公式映射在EF中不可用,但希望有人提供简单的解决方案或解决方法。
简化实体:
public class Department
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual bool CanChange { get; set; }
}
简化的nHibernate Map:
public DepartmentMap()
{
Map(x => x.Name);
Map(x => x.CanChange)
.Formula("(select case when count(*) > 0 then 0 else 1 end from Users where Users.placeid = Id)");
}
答案 0 :(得分:2)
您可以更改数据库吗?
这看起来像是(非持久的)Computed Column的候选人。
添加列然后将其映射为常规属性并将其标记为只读。
您需要为查询创建一个函数,因为它使用另一个表
Enum.values()
答案 1 :(得分:0)
另一种方法是创建一个View,它返回所有部门以及是否可以更改它们。
使用EF进行地图。
与部门建立1对1的加入关系。