新しいEntity Frameworkでコードファーストアプローチを使用しようとしましたが、データベースのテーブルは自動的に作成されません。コードEFの最初のアプローチは私のためには役に立たない
私は既に(App_Codeフォルダ内に)データベースを作成しており、私はコードファーストアプローチを使用しています。私はDBのテーブルを最初に作成する必要がありますか、自動的に作成する必要がありますか?
add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient"
add name="MyDB"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; AttachDBFilename=|DataDirectory|MyDB.mdf;User Instance=true"
providerName="System.Data.SqlClient"
クラス(モデルフォルダ内の)私のオブジェクトを説明する
public class UserProfile
{
[Key]
[Required]
public string PhoneNumber { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string MiddleName { get; set; }
[Required]
public string Surname { get; set; }
[Required]
public DateTime Birthday { get; set; }
public int PositionId { get; set; }
public string Boss { get; set; }
[Required]
public int CompanyId { get; set; }
}
DbContext:以下
は、私は2つの接続文字列を持っているWeb.configファイルには、私のプロジェクトの説明でありますクラス(モデルフォルダ内)
public class MyDB : DbContext
{
//public MyDB() : base("MyDB") { }
public DbSet<UserProfile> UserProfiles { get; set; }
}
データベースに新しい(&)レコード(テーブルはまだ存在しません)を挿入しようとしているコントローラです。
例外の詳細:System.Data.SqlClient.SqlException:無効なオブジェクト名 'dbo.UserProfiles' 私は、私は例外を取得
SaveChanges()
を呼び出すようにしようとしているUserProfile newProfile = new UserProfile(); newProfile.CompanyId = 1; newProfile.PhoneNumber = model.PhoneNumber; newProfile.FirstName = model.FirstName; newProfile.MiddleName = model.MiddleName; newProfile.Surname = model.Surname; newProfile.Birthday = Convert.ToDateTime(model.Birthday); var myDb = new Models.MyDB(); myDb.UserProfiles.Add(newProfile); myDb.SaveChanges();
。
両方の接続文字列を削除してみます。実際には自動的にデータベースを作成する必要があります。 –
しかし、私は既にいくつかのテーブルとデータが入っているデータベースを持っていて、別のテーブルをコードに追加するのであれば、最初にアプローチしますか?このアプローチは機能しませんでしたか? – Pavel
テーブルUserProfilesを手動で作成すると、すべてのOkと新しいレコードが挿入されます。しかし、私はコードが最初に欲しい:) – Pavel