0

最近、ASP.NET MVC と Entity Framework を使い始めました。

既存のデータベースを使用して、クラスをデータベース テーブルにマップしようとしました。成功せずに。

私のデータベーステーブルをお見せしましょう:

->カテゴリ --> ID (PK) --> タイトル --> 説明

->製品 --> ID (PK) --> 名前 --> 説明 --> 価格 --> カテゴリ (FK -> カテゴリツリー)

-> CategoriyTree --> Id (PK) --> ParentCategory (FK -> カテゴリ) --> ChildCategory (FK -> カテゴリ)

さて、Entity Framework のクラス:

class Products
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal? Price { get; set; }
    public virtual ICollection<CategoryTree> Category { get; set; }
}

class Categories
{
    public int categoriesId { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
}

class CategoryTree
{
    public int Id { get; set; }
    public virtual ICollection<Categories> ParentCategory { get; set; }
    public virtual ICollection<Categories> ChildCategory { get; set; }
}

class EFDbContext : DbContext
{
    public DbSet<Products> Products { get; set; }
    public DbSet<Categories> Categories { get; set; }
    public DbSet<CategoryTree> CategoryTree { get; set; }
}

アプリケーションを起動すると、コンパイラは次のエラー メッセージを警告します 。 データベースが作成されてから、'EFDbContext' コンテキストをサポートするモデルが変更されました。Code First Migrations を使用してデータベースを更新することを検討してください ( http://go.microsoft.com/fwlink/?LinkId=238269 )。

誰かがこれを理解するのを手伝ってくれることを願っています;-)

よろしくお願いします

4

3 に答える 3

2

Global.asax.cs の Application_Start() メソッドで、次の行を追加します。

Database.SetInitializer<EFDbContext>(null);

これにより、Entity Framework は、データベースの作成以降のモデルへの変更をチェックできなくなります。

于 2013-04-23T20:04:31.080 に答える
1

Categories.IdデータベースとCategories.categoriesIdモデルの上記の情報 id からわかる唯一の違い(タイプミスがないことを前提としています)。

また、列のnull可能性も確認してください。たとえばProduct.Price、モデルではnull可能ですが、データベースではそうですか?

モデルとは異なる名前で新しいデータベースを生成し、既存のデータベースと比較することもお勧めします。データベース名は接続文字列で指定されるため、コンストラクターを DbContext クラスに追加し、接続文字列を渡します。

internal class EFDbContext : DbContext
{
    public EFDbContext(string connectionString) : base(connectionString)
    {

    }
于 2013-04-23T20:16:30.880 に答える