0

ASP.NET MVC と Entity Framework の使用、具体的には SQLite db の使用を開始しましたが、少し問題があります。

1 対多の関係がありますが、EF は間違ったクエリを生成します。

SQLite error
no such column: Extent1.Category_CategoryID

そのため、彼は ModelName をプレフィックスとして使用していますが、それは間違っています。削除できる規則はありますか? それとも出発?

thx、私の悪い英語でごめんなさい

// Update、Category エンティティを追加

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;


namespace Eshop.Domain.Entities
{
    [Table("Categories")]
    public class Category
    {
        public Int64 CategoryID { get; set; }
        public string Name { get; set; }
        public virtual ICollection<Product> Products { get; set; }
    }
}

// Product エンティティを追加

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;

namespace Eshop.Domain.Entities
{
    [Table("Products")]
    public class Product
    {
        public Int64 ProductID { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
        public int CategoryID { get; set; }


    }
}
4

1 に答える 1

1

Code-First を使用している場合 (これは私が想定しています)、次のことを行う必要があります。

  • にナビゲーション プロパティを導入しますProduct

    [Table("Products")]
    public class Product
    {
        public Int64 ProductID { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
        public int CategoryID { get; set; }
    
        public virtual Category Category { get; set; }
    }
    

    EFはCategoryID外部キーとして認識します。

  • またはCategoryIDFluent API を使用して外部キーとして構成します。

    modelBuilder.Entity<Category>()
        .HasMany(c => c.Products)
        .WithRequired()
        .HasForeignKey(p => p.CategoryID);
    
于 2012-06-19T16:22:28.933 に答える