我正在使用Linq / EF4.1从数据库中提取一些结果,并希望将结果限制为(X)最近的结果。 其中X是用户设定的数字。 有没有办法做到这一点? 如果这将有助于限制结果集,我目前将它们作为List传回。 虽然我可以通过循环来限制这个,直到我打到X我只是假设不传递额外的数据。 以防万一它是相关的…从SQL Server数据库运行的C#MVC3项目。
我在MVC 4 aspnet网站上使用EF5。 在本地,一切正常,但是当我发布到IIS并尝试进入,我得到的错误 “System.Data.Entity.Internal.AppConfig”的types初始值设定项引发了一个exception。“ 详细的例外 创buildentityFramework的configuration节处理程序时发生错误:在应用程序configuration中多次指定了DbContexttypes“GdpSoftware.Server.Data.GdpSoftwareDbContext,GdpSoftware.Server.Data”的configuration。 每个上下文只能configuration一次。 (E:\ App \ web.config第104行) 我在StackOverflow中检查了上一个问题,并且已经通过Nuget EntityFramework卸载并重新安装,并且检查了每个项目中对它的每个引用是EF5。 我也检查了每个项目中选定的框架是4.5。 任何想法,什么可能会导致这个问题? 谢谢! 吉列尔莫。 web.config中 <?xml version="1.0" encoding="utf-8"?> <!– For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 –> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <!– For more information on Entity Framework […]
我正在使用代码devise我的数据库,我需要一点帮助。 我得到这个错误: 引入表'发票'上的FOREIGN KEY约束'SalesOrder_Invoices'可能会导致循环或多个级联path。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创build约束。 查看以前的错误。 我想要有以下的关系/关键: –> = 1 to Many Relationship 客户 – >客户位置 CustomerLocation – > SalesOrder SalesOrder – >发票 SalesRep – > SalesOrder PaymentTerm – >客户 PaymentTerm – > SalesOrder PaymentTerm – >发票 我试图按照以下标准来定义它们: <ClassName><PrimaryKeyID> 例如: Customer有ID属性,所以在CustomerLocation我定义了如下所示的外键: Public Property CustomerID AS Integer 我所要做的就是定义外键是否正确? […]
我首先在Entity Framework 4.1代码中有一个简单的代码: PasmISOContext db = new PasmISOContext(); var user = new User(); user.CreationDate = DateTime.Now; user.LastActivityDate = DateTime.Now; user.LastLoginDate = DateTime.Now; db.Users.Add(user); db.SaveChanges(); user.Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2E") }; db.SaveChanges(); db.Users.Add(new User() { Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2E") } }); db.SaveChanges(); 问题是我得到一个错误 保存不会为其关系公开外键属性的实体时发生错误。 EntityEntries属性将返回null,因为单个实体不能被识别为exception的来源。 通过在实体types中公开外键属性,可以更轻松地处理exception。 有关详细信息,请参阅InnerException。 […]
我在DbContext有以下实体: public class A { public A() { Bs = new List<B>(); } public ICollection<B> Bs { set; get; } } 有时我想更新图表: var a = dbContext.As .AsNoTracking() .Include(x=>x.Bs) .firstOrDefault(); var c = new C(); a.Bs.Add(c); var d = new D(); var e1 = new E(); var e2 = new E(); d.Es.Add(e1); //<– added new E […]
我正在使用entity framework和entity framework迁移来实现使用代码优先和自动迁移的解决scheme。 它曾经工作很好,但突然停止检测我对POCO的更新。 现在,当我添加一个新的属性(非常简单的属性,如年龄或电子邮件),并执行Update-Database ,没有任何反应,它给了我这个: 指定'-Verbose'标志来查看迁移过程中正在执行的SQL命令。 find0等待显式迁移:[]。 添加种子数据(如果在迁移设置类中重写了Seed方法)。 没有更新! 有没有人知道为什么会发生这种情况?
又如何在Code First中创build多个标识列? 由于集群性能,常见的build议是使用自动增量整数列而不是使用newid()创build的GUID。 为了将列声明为自动增量,必须使用Annotation [DatabaseGenerated(DatabaseGeneratedOption.Identity)]指定它。 但是,你只能在一个表中有一个身份。 因此,从一个基本模型开始,如: public abstract class ModelBase { // the primary key public virtual Guid Id { get; set; } // a unique autoincrementing key public virtual int ClusterId { get; set; } } 我们如何设置它以便: Guid是由数据库自动生成的,而不是代码 ClusterId是自动增量的 entity framework代码首先不会抛出各种类似的错误: 不支持将主键列的属性“StoreGeneratedPattern”设置为“计算”的表的修改。 改用“身份”模式。 仅供参考 ,如果您确实想在代码中自动生成它,则可以跳过Id字段的注释,并执行如下操作: public abstract class AbstractContext : DbContext { /// […]
当我们启动多个asynchronousentity framework查询并同时运行它们时会发生什么? 他们是在物理上并行执行吗? 他们是由entity framework序列化? 这是不受支持的? 这是否会导致exception? public async Task QueryDatabase() { using (var context = new MyDbContext()) { Task task1 = context.SomeTable1.ToListAsync(); Task task2 = context.SomeTable2.ToListAsync(); await Task.WhenAll(task1, task2); } }
我正在学习知识库模式,正在阅读知识库模式与entity framework4.1和代码优先和通用知识库模式 – entity framework,ASP.NET MVC和unit testing三angular关于他们如何实施存储库模式与entity framework。 话 •从上层隐藏EF •使代码更好地testing 使代码更好testing我明白,但为什么从上层隐藏EF? 看看它们的实现,似乎只是用entity framework的一般方法来包装entity framework。 其实这是什么原因呢? 我假设是 松耦合(这就是为什么从上层隐藏EF)? 避免重复为相同的查询写同样的LINQ语句 我的理解是否正确? 如果我写一个DataAccessLayer是一个类有方法 QueryFooObject(int id) { ..//query foo from entity framework } AddFooObject(Foo obj) { .. //add foo to entity framework } …… QueryBarObject(int id) { .. } AddBarObject(Bar obj) { … } 这也是一个存储库模式? 假人的解释将是伟大的:)
我的数据库中的date存储为Utc。 但是,当我把它们放回entity framework时,它们就是未指定的types。 当JSON.Net序列化它们时,它们不是Utc格式。 有没有办法告诉JSON.Net序列化date时间为Utc,即使他们的types没有指定为Utc?