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 を定義済みの文字列で設定する必要があることです。他のプロパティの値を収集することによって生成されません。

Lookup_Id プロパティを通常の getter/setter を持つプロパティに変更し、Lookup_Id を設定する拡張メソッドを追加できます。ただし、これには、最初にすべてのオブジェクトをデータベースに保存して、データベースで生成された主キー値を割り当ててから、拡張メソッドを呼び出して Lookup_Id プロパティを設定し、アイテムを再度保存する必要があります。

オブジェクトを 2 回保存せずにこれを達成できる方法はありますか? システムが作成するアイテムの主キー値が入力された Lookup_Id を生成できる必要がありますが、たとえば CSV ファイルからインポートする値を Lookup_Id に割り当てることもできる必要があります。

4

1 に答える 1