0

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

4

1 回答 1

1

为什么不创建一个从现有类派生的新类?将您的 Lookup_Id 标记为虚拟并在新类中覆盖它...这有助于实现您的目标吗?

于 2013-08-26T22:08:03.410 回答