C# .NET实体框架使用Table.ModelName\u列约定生成查询
我已经开始使用ASP.NET MVC和实体框架,具体地说是SQLite db, 但我有一个小问题: 我有一对多关系,但EF生成了错误的查询C# .NET实体框架使用Table.ModelName\u列约定生成查询,c#,asp.net,asp.net-mvc-3,entity-framework,sqlite,C#,Asp.net,Asp.net Mvc 3,Entity Framework,Sqlite,我已经开始使用ASP.NET MVC和实体框架,具体地说是SQLite db, 但我有一个小问题: 我有一对多关系,但EF生成了错误的查询 SQLite error no such column: Extent1.Category_CategoryID 因此,他使用ModelName作为前缀,这是错误的。 有什么我可以取消的惯例吗?还是出发 谢谢,很抱歉我的英语不好 //更新,添加类别实体 using System; using System.Collections.Generic; usin
SQLite error
no such column: Extent1.Category_CategoryID
因此,他使用ModelName作为前缀,这是错误的。
有什么我可以取消的惯例吗?还是出发
谢谢,很抱歉我的英语不好
//更新,添加类别实体
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; }
}
}
如果您首先使用代码(我假设是这样),您需要
- 在
:产品中引入导航属性
EF将把[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; } }
识别为外键CategoryID
- 或者使用Fluent API将
配置为外键:CategoryID
modelBuilder.Entity<Category>() .HasMany(c => c.Products) .WithRequired() .HasForeignKey(p => p.CategoryID);
modelBuilder.Entity() .HasMany(c=>c.Products) .WithRequired() .HasForeignKey(p=>p.CategoryID);
Extent1
是Categories
表吗?不知何故,Category\u CategoryID
看起来更像是来自另一个表的外键……查询是由EF自动生成的,Extent1应该是Categories。CategoryID包含实体、产品和类别,在Category的情况下,它是主键,并且仅在Product的单个列中。因此,这是一对多关系,Categories.CategoryID=>Products.CategoryID。您是否也可以显示Product
类?我遇到了这个错误。请你用正确的方式给我发邮件(我的意思是在两个类中都有反向引用)请@ramsesoou,我忘记了反向引用属性(mean Category)。EF也有问题,他无法识别外键(使用SQLite,可能是错误的表结构)。公共Int64类别ID{get;set;}//EF需要少量修复。谢谢你的帮助。
modelBuilder.Entity<Category>()
.HasMany(c => c.Products)
.WithRequired()
.HasForeignKey(p => p.CategoryID);