Bjö*_*örn 2 .net c# nhibernate
我正在使用Fluent NHibernate(v.1.3),我有两个参与者:
public class MyObject
{
public virtual int Id { get; protected set; }
public virtual string Tag { get; set; }
public virtual List ListValue { get; set; }
}
public class List
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
映射看起来像这样:
public MyObjectMap()
{
Table("my_table");
Id(x => x.Id).Column("dtl_id").GeneratedBy.Native();
Map(x => x.Tag).Column("mfl_tag").Not.Nullable();
References<List>(x => x.ListValue).Column("lst_id").Nullable();
}
public ListMap()
{
Id(x => x.Id).Column("lst_id").GeneratedBy.Native();
Map(x => x.Name).Column("lst_name").Nullable().Length(50);
}
Run Code Online (Sandbox Code Playgroud)
现在我想在MyObject上设置"lst_id"值(即ListValue.Id).
通常我只是将ListValue属性设置为List对象的实例,但在特定情况下我只有一个Id.
我可以使用Id从数据库中获取List对象,但这似乎是不必要的,因为我不想对列表对象本身做任何事情,我只想设置lst_id值并保存对象.
另一种选择是将List中Id的setter属性更改为public而不是protected.然后我可以创建一个新的List实例,将Id设置为我想要的,并将其分配给MyObject.ListValue.这也可以,但是感觉不对,因为Id是由数据库生成的,并且将setter保护为显示清楚.
有第三种选择吗?
归档时间: |
|
查看次数: |
636 次 |
最近记录: |