我正在使用带有属性映射的 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 文件导入的值。