我有一个实体。具有以下属性:
public class Entity
{
public int CustomerId { get; set; }
public Customer { get; set; }
}
如何映射CustomerId两次。一次是int属性,一次是多对一关系吗?
<many-to-one name="Customer" column="[CustomerId]" class="Customer"/>
<property name="CustomerId" column="[CustomerId]" type="Int64" />
就是这样,不起作用。我已经尝试过了,只能让它们读取但没有成功。
答案 0 :(得分:3)
其中一个应该映射为只读(inser / udpate false),并引用为formula
<many-to-one name="Customer" column="[CustomerId]" class="Customer"/>
<property name="CustomerId" formula="[CustomerId]" type="Int64" insert="false" update="false" />
然后它应该正常工作。然后,这两个属性都可以用于Select,Where ... order by
答案 1 :(得分:1)
您无需映射CustomerId,您可以通过Customer.CustomerId访问它。如果您正在使用延迟加载,则会在代理对象中填充CustomerId,因此它始终可用,而不会触发其他选择。
如果您必须公开它,请将其公开为可以为空的只读属性:
public Customer { get; set; }
public int? CustomerId
{
get { return Customer == null ? (int?)null: Customer.CustomerId }
}