0

私のコードには2つの問題があります。

  1. Code First メソッドを使用してデータベースを作成し、コードは正常に実行されましたが、SQL Server Management Studio を開いたときに、データベースが見つかりませんでした。

  2. その後、何らかの理由で学生クラスの名前を変更し(「最初の文字を大文字にする」)、実行しようとするとエラーが表示されます。

学生クラス:

class Student
{
    public Student()
    {
    }

    public int StudentID {get;set;}
    public string StudentName { get; set; }
    public DateTime? DateOfBirth { get; set; }
    public decimal Height { get; set; }
    public float Weight { get; set; }

    public Standard Standards { get; set; }
}

標準クラス:

class Standard
{
    public Standard()
    {
    }

    public int StandardID { get; set; }
    public string StandardName { get; set; }
    public ICollection<Student> students { get; set; }
}

コンテキスト クラス:

class StudentContext : DbContext
{
    public StudentContext() : base()
    {
    }

    public DbSet<Standard> Standards { get;set;}
    public DbSet<Student> Students { get; set; }
}

メインクラス:

class Program
{
    static void Main(string[] args)
    {
        using (var cxt = new StudentContext())
        {
            Student st = new Student() { StudentName = "Vineeth reddy" };
            cxt.Students.Add(st);
            cxt.SaveChanges();
        }
    }
}

のエラー メッセージcxt.Students.Add(st);:

タイプ 'System.InvalidOperationException' の未処理の例外が EntityFramework.dll で発生しました

追加情報: アプリケーションの構成ファイル内の接続文字列 'StudentContext' に、必要な providerName 属性が含まれていません

追加したデータベースがありません:

ここに画像の説明を入力

どんな助けでも大歓迎です。私は初心者です。まだわからない場合は..なので、通常よりももう少し詳しく説明してください。どうぞよろしくお願いいたします。

4

1 に答える 1

1

app.configデータベースが SQL Server Management Studio にない理由は、ファイルに接続文字列を指定しなかったためだとわかりました。

追加した:

<ConnectionStrings>
    <add name="StudentContext"
         connectionString = "server=.; database = Sample; integrated security = true"
         providerName = "system.Data.sqlClient"/>
</ConnectionStrings>

これにより、SampleSQL Server Management Studio でデータベース名が作成されましたが、ファイルに接続文字列属性を指定しなかった場合にデータが保存される場所を知りたいapp.configです。

また、生徒名を変更すると、以前のようにエラーになりますか? もしそうなら、どうすれば解決できますか?

于 2016-09-19T00:15:55.473 に答える