“参考”属性在客户端不可见

时间:2010-09-20 09:45:47

标签: c# fluent-nhibernate wcf-ria-services

像往常一样,我遇到了ria service + nhibernate的问题。问题是如何制作实体财产 ,使用“引用”映射,在客户端可见。问题是当你加载一个实体 如果没有此字段并尝试保存它,则db内的缺失值将更新为NULL。这是类模式:

 public class A
{
            public virtual ComplexProperty property {get;set;}
}

public class AMap
{
  public  AMAP()
  {
   References(p=>p.property).Nullable().Column(“COMPLEX_PROPERTY_ID”);
  }
}

(我已经跳过了部分映射/声明键属性,因为它是在底层类中创建的) 包含和关联属性的常用技巧(与HasMany一样)不起作用,因为里面没有真正的foreign_key属性 A级

1 个答案:

答案 0 :(得分:0)

找到了一个适合我的解决方案。将“假”外键属性添加到未映射到数据库的A类就足够了。它允许定义关联:

       public class A
       {
           [Include]
           [Association("Relation1","ComplexPropertyId","Id")]
           public virtual ComplexProperty property {get;set;}
           public virtual int ? ComplexPropertyId {get;set;}
       }

最后要做的是在从db检索对象后在客户端手动设置ComplexPropertyId(映射保持不变)。

public IQueryable<A> GetA()
{
 var item = repository.Query<A>();
 foreach(var a in item) a.ComplexPropertyId = a.ComplexProperty.Id;
 return item;
}