0

私の質問を正確に表現する方法がわからないため、おそらくどこにもこの例を見つけることができません。私は MVC4 と EF5 (Web API も) をいじっていますが、これまで実際に多くのことをする必要がなかったため、モデルの処理方法がわかりません。私は元素の周期表について何かをしていて、電子配置を持つ元素のリストを作成できるようにしたいと考えています。ただし、入力順序に基づいて自動番号付けしたいと思います。フィールドを自動インクリメントするように EF に指示するにはどうすればよいですか? 基本的に、その背後にある制限のない主キー フィールドのようなものです。これが私がこれまでに持っているものです-どのように進めればよいかわかりません:

public class Elements
{
    public int ElementID { get; set; }
    public string Name { get; set; }
    public int AtomicNumber { get; set; }
    public string Symbol { get; set; }
    public virtual Categories Category { get; set; }
    public virtual States State { get; set; }
    public virtual Occurences Occurence { get; set; }
    public virtual ICollection<Configurations> Configuration { get; set; }
}

public class Categories 
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
}

public class States
{
    public int StateID { get; set; }
    public string StateName { get; set; }
}

public class Occurences
{
    public int OccurenceID { get; set; }
    public string OccurenceName { get; set; }
}

public class Configurations
{
    public int ConfigurationID { get; set; }
    public int Order { get; set; }
    public int Value { get; set; }
}

私が望むのは、Configurations.Order に値が追加されるたびに、値が 1 から始まり、新しい「行」ごとに増加しますが、その特定の ElementID に対してのみです。

それは理にかなっていますか?データ注釈の使用を検討していましたが、キー フィールド以外に一致するものは見つかりませんでしたが、それによって各注文が一意の番号になってしまいます。これは望ましくありません。私はそれを理解するために見てきたすべてのもののために、これを正しく表現していないように感じるので、ここに写真があります! わーい!

ここに画像の説明を入力

これは、プログラムの観点からは、より良いものになる可能性があります。このデータはブルームーンで一度変更されますが、可能であれば EF を介してそれを試してみたいと思っていました。

事前に感謝します。また、他に明らかなエラーが見られた場合は、ぜひお知らせください :) 私は Web 開発のこちら側で作業することはめったにないので、もっとうまくやる方法があると確信しています。

4

1 に答える 1

0

フィールドを自動インクリメントするように EF に指示するにはどうすればよいですか?

できません。単純な自動インクリメントの主キーでさえありません。他の値に関連して増加する必要があるフィールドは言うまでもありません。

マッピング メソッドは、HasDatabaseGeneratedOptionキー値の生成方法を EF に伝える方法ではありません。データベースがプロパティの値を生成するかどうか、およびその方法を EF に通知するため、EF はそれに応答する方法を認識します。

そのため、コードで注文番号を生成するか、(トリガーによって、または CUD アクションConfigurationsをストアド プロシージャにマッピングすることによって) データベースにそれを行わせ、データベースがプロパティHasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)の構成によって値を計算することを EF に伝える必要がありOrderます。

于 2012-11-28T22:05:32.317 に答える