[英]Linq-To-SQL attribute mapping string property containing DbGenerated primary key
我正在使用具有属性映射的Linq-To-SQL,并且具有一个具有以下属性的类:
private long item_Id;
[Column(Storage="item_Id", IsDbGenerated = true, IsPrimaryKey = true)]
public long Item_Id;
private string description;
[Column(Storage="description")]
public string Description
{
get { return description; }
set { description = value; }
}
private string lookup_Id;
[Column(Storage="lookup_Id")]
public string Lookup_Id
{
get { return lookup_Id.ToString() + "|" + Description; }
}
Lookup_Id字段实际上包含的数据要多得多,但是我缩小了此问题的范围。
实际上,此设置允许我将数据库生成的主键用作对象的Lookup_Id属性的一部分。
我的问题是我需要从其他来源将项目导入此数据库,并且这些项目的Lookup_Id需要由定义的字符串设置; 不是通过收集其他属性的值生成的。
我可以使用常规的getter / setter将Lookup_Id属性更改为一个,并添加填充Lookup_Id的扩展方法。 但是,这将要求我先将所有对象保存到数据库中,以分配其数据库生成的主键值,然后调用扩展方法以填充Lookup_Id属性,然后再次保存项目。
有什么方法可以完成此任务而无需两次保存对象? 我需要能够使用系统创建的项目填充的主键值来生成Lookup_Id,但是我还需要为Lookup_Id分配我可能会从CSV文件导入的值。
为什么不创建一个从现有类派生的新类? 将您的Lookup_Id标记为虚拟并在新类中将其覆盖...这是否有助于实现您的目标?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.