繁体   English   中英

包含DbGenerated主键的Linq-To-SQL属性映射字符串属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM