0

私は現在、いくつかの MVC3 サイトを構築しており、MVC4 を試してみようと考えています。しかし、私はあまり進んでおらず、その理由がわかりません...

最初にコードを使用してモデルを記述し、データベースを生成します。ただし、機能しておらず、ID フィールドが必要であることを示す検証エラーがスローされます。私は彼らの命名規則に従い、さまざまなチュートリアルに示されているようにいくつかの異なるものを試してみましたが、何もうまくいかないようです. これまで、EF は私の PK を決定することができ、挿入のためにそれらを指定することを心配する必要がありませんでした。これは、私が見ているすべての MVC4 チュートリアルに当てはまるようですが、どういうわけか、それらを正確に実行しても、私のデータベースは生成されません。

私のユーザーモデルの切り捨てられた例:

public class User
{
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
}

次に、エラーの原因となっている初期化子:

    public class WorkoutInitializer : DropCreateDatabaseIfModelChanges<WorkoutContext>
{
    protected override void Seed(WorkoutContext context) {

        var users = new List<User>
        {
            new User {
                FirstName = "D",
                LastName = "H",
                Email = "blah@blahblah.com",
                Password = "3f9cbbb2dad0774468af842678b11dafa7a16d81",

            },
        };
        users.ForEach(u => context.Users.Add(u));
        context.SaveChanges();

        ...bunch more stuff...
    }
}

context.SaveChanges() が呼び出されると、プログラムは ValidationError をスローし、「UserId フィールドが必要です」と通知します。

ここで何が欠けていますか?

4

2 に答える 2

2

UserId はおそらく int または Guid である必要があります。

于 2012-07-17T17:07:26.983 に答える
1

データベースの生成時に、EF が主キーおよび ID 列として UserId を作成していないように見えます。UserId が null 非許容の int であり、null のままにしておくことができないため、このエラーがスローされています。SSMS の列プロパティで SQL Server 列を Identity から Yes に手動で変更することもできますが、UserId を [Key] 属性で装飾して、データベース生成時に強制的に主キーにする方が簡単だと思います。

[Key]
public int UserId { get; set; }

これには System.ComponentModel.DataAnnotations 名前空間が必要であることに注意してください

于 2012-07-18T01:03:50.080 に答える