私のエンティティ名は「Contact」で、テーブル名は「Contact」です。ただし、デフォルトの複数化サポートにより、EF4は「Contacts」という名前のテーブルを検索します。複数化のサポートをオフにする方法について誰かが何か考えを持っていますか?
この投稿には、複数形のサポートに関する詳細があります。しかし、それでも私には答えがありません。
この投稿には次のテキストがあります。まず、この変更を行うために必要な物理的な.ttファイルがわかりません。また、この機能をすべてではなく1つのアプリでのみオフにしたい。
T4 Toolboxのコードジェネレーターでは、Visual Studio 2010でデフォルトで複数形がオンになっています。おそらく互換性の理由で複数形なしでDALを生成する必要がある場合は、前に.ttファイルに次の行を追加してこのオプションをオフにできます。 generator.Run()メソッドが呼び出されます。
C#
generator.Pluralize = false;
VB
ジェネレーター.Pluralize=False
アップデート
以下は私が使用するコードであり、以下のエラーが発生します:-
コンタクト
public class Contact
{
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
public DateTime AddDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
コンテクスト:-
public class AddressBook : DbContext
{
public DbSet<Contact> Contact { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Contact>().MapSingleType().ToTable("dbo.Contact");
}
}
メインプログラム:-
using (var context = new AddressBook())
{
var contact = new Contact
{
ContactID = 10000,
FirstName = "Brian",
LastName = "Lara",
ModifiedDate = DateTime.Now,
AddDate = DateTime.Now,
Title = "Mr."
};
context.Contact.Add(contact);
int result = context.SaveChanges();
Console.WriteLine("Result :- " + result.ToString());
}
そして、「context.Contact.Add(contact);」で次のエラーが発生します:-
System.InvalidOperationException:データベースが作成されてから、「AddressBook」コンテキストをサポートするモデルが変更されました。データベースを手動で削除/更新するか、IDatabaseInitializerインスタンスを使用してDatabase.SetInitializerを呼び出します。たとえば、RecreateDatabaseIfModelChangesストラテジーは、データベースを自動的に削除して再作成し、オプションで新しいデータをシードします。System.Data.Entity.Infrastructure.CreateDatabaseOnlyIfNotExistsで
1.InitializeDatabase(TContext context) at System.Data.Entity.Infrastructure.Database.Initialize() at System.Data.Entity.Internal.InternalContext.Initialize() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.EfInternalQuery
1.Initialize()at System.Data.Entity.DbSet1.ActOnSet(Action action,EntityState newState, TEntity entity) at System.Data.Entity.DbSet
1.Add(TEntity entity)at CodeFirst.Client.Program.Main(String [] args)in E:\ Ashish \ Research \ VS Solutions \ EntityFramework \ CodeFirstApproach_EF_CTP4 \ CodeFirst.Client \ Program.cs:line 35
私はどこかで愚かな間違いを犯していると確信しています。誰かがいくつかの指示を提供できますか?
答えポールト の助けを借りて、私はこの問題と解決策をここで説明しました。