我收到错误“非静态方法需要目标”。 当我运行以下查询: var allPartners = DbContext.User .Include(u => u.Businesses) .Where(u => u.Businesses.Any(x => x.Id == currentBusinessId)) .ToList(); 我的实体是这样定义的: public class User : Entity { public virtual List<Business> Businesses { get; set; } } public class Business : Entity { public virtual List<User> Users { get; set; } } public class Entity { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public […]
我意识到很多问题都被问及全文search和entity framework,但我希望这个问题有点不同。 我使用的是entity framework,Code First,需要进行全文search。 当我需要执行全文search时,我通常也会有其他标准/限制 – 比如跳过前500行,或者在另一列上过滤等等。 我看到这已经使用表值函数处理 – 请参阅http://sqlblogcasts.com/blogs/simons/archive/2008/12/18/LINQ-to-SQL—Enabling-Fulltext-searching.aspx 。 这似乎是正确的想法。 不幸的是,直到entity framework5.0(即使那样,我相信它们不被Code First支持),表值函数也不被支持。 我真正的问题是什么build议最好的方式来处理这个,entity framework4.3和entity framework5.0。 但具体来说: 除了dynamicSQL(例如通过System.Data.Entity.DbSet.SqlQuery ),是否有任何选项可用于Entity Framework 4.3? 如果我升级到entity framework5.0,有没有办法,我可以使用表值函数与代码第一? 谢谢,埃里克
实际上有什么区别: this.HasRequired(a => a.Something) .WithMany() .Map(a => a.MapKey("SomethingId")); 和 this.HasRequired(a => a.Something) .WithMany() .HasForeignKey(a => a.SomethingId);
我正在使用VS 2012 MVC4代码首先构build一个Web应用程序。 为了在更改模型后重新创build.mdf文件,我手动从VS中的app_data目录中删除了该文件。 我已经做了几次,没有任何问题。 现在我收到一个例外: 底层提供程序在打开时失败。 ==>不能将MYDB.mdf文件MYDB.mdf为数据库'MYDB' 。 我将不胜感激您如何重新创build.mdf文件的帮助。 谢谢!
设想三个实体(Customer,Book,Author)是这样的: 客户有很多书籍 一本书有一个作者 我使用这些数据来打印这样的报告: Customer: Peter Book: To Kill a Mockingbird – Author: Harper Lee Book: A Tale of Two Cities – Author: Charles Dickens Customer: Melanie Book: The Hobbit – Author: JRR Tolkien 当我查询客户时,正如我们所期望的那样,我得到了一系列以下性质的查询 查询获取客户 每个客户查询他的书籍的查询 每本书的查询来获取其作者 我可以通过包含这样的书籍来减less查询次数: var customers = db.Customers.Include(c => c.Books); 但是我不知道如何加载第三层(作者)。 我怎样才能做到这一点?
这个代码是在为使用NuGet的SQL Server CE添加entity framework代码之后为我生成的。 他们没有改变任何其他文件。 文件SQLCEEntityFramework.cs已创build并放置在App_Start文件夹中。 这是否意味着它会自动执行或什么? 当我为MVC 3添加Ninject时,也发生了同样的事情。没有代码被添加到global.ascx文件,所以我不知道它的即插即用或我必须configuration的东西。 [assembly: WebActivator.PreApplicationStartMethod(typeof(StackTorrents.WebUI.App_Start.SQLCEEntityFramework), "Start")]
我正在使用entity framework的代码优先function,我想弄清楚如何指定自动生成数据库时应该创build的列数据types。 我有一个简单的模型: public class Article { public int ArticleID { get; set; } public string Title { get; set; } public string Author { get; set; } public string Summary { get; set; } public string SummaryHtml { get; set; } public string Body { get; set; } public string BodyHtml { get; set; […]
我使用entity framework5与Visual Studio与entity framework电动工具testing版2来逆向工程中等大小的数据库(~100表)。 不幸的是, 导航属性没有有意义的名字 。 例如,如果有两个表: CREATE TABLE Contacts ( ContactID INT IDENTITY (1, 1) NOT NULL, … CONSTRAINT PK_Contacts PRIMARY KEY CLUSTERED (ContactID ASC) } CREATE TABLE Projects ( ProjectID INT IDENTITY (1, 1) NOT NULL, TechnicalContactID INT NOT NULL, SalesContactID INT NOT NULL, … CONSTRAINT PK_Projects PRIMARY KEY CLUSTERED (ProjectID ASC), […]
命名我的数据库表时,我更喜欢使用单数名词。 然而,在EF代码中,生成的表格总是复数。 我的DbSets是多元化的,我相信是EF生成名称的地方,但我不想将这些名称单数化,因为我相信在代码中使用复数forms更为实用。 我也试图压倒设置,但无济于事。 有任何想法吗? 这是我的代码和谢谢。 MyObjectContext.cs public class MyObjectContext : DbContext, IDbContext { public MyObjectContext(string connString) : base(connString) { } public DbSet<Product> Products {get;set;} public DbSet<Category> Categories {get;set;} //etc. protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>(); } }
当我尝试附加实体上下文我得到一个exception ObjectStateManager中已经存在具有相同键的对象。 ObjectStateManager不能使用同一个键跟踪多个对象 这是预期的行为。 但是我想知道ObjectStateManager是如何知道的? 我想自己以前做这个检查