Tag: entity framework

DbSet mock,第二次调用ToList时没有结果

我正在尝试模拟DbContext和DbSet。 这适用于我之前的unit testing,但是当我的代码第二次在DbSet上调用ToList方法时出现问题。 首先dbSet.ToList()返回模拟结果。 第二个返回0个元素; var queryableData = new List{ “a”, “b”, “c” }.AsQueryable(); var mockDbSet = new Mock<DbSet>(); var q = mockDbSet.As<IQueryable>(); q.Setup(m => m.Provider).Returns(queryableData.Provider); q.Setup(m => m.Expression).Returns(queryableData.Expression); q.Setup(m => m.ElementType).Returns(queryableData.ElementType); q.Setup(m => m.GetEnumerator()).Returns(queryableData.GetEnumerator()); DbSet dbset = mockDbSet.Object; IQueryable query = dbset; //RESULTS: abc var a1 = dbset.ToList(); foreach (var a in a1) Console.Write(a); […]

从c#中的WebApi OData(EF)响应中排除属性

我正在使用C#的WebApi项目(EF代码优先),我正在使用OData。 我有一个“用户”模型,包含Id,Name,LastName,Email和Password。 在控制器例如我有这个代码: // GET: odata/Users [EnableQuery] public IQueryable GetUsers() { return db.Users; } 如果我调用/ odata / Users,我将获得所有数据:Id,Name,LastName,Email和Password。 如何从结果中排除密码,但在控制器中保持可用以进行Linq查询?

使用entity frameworkCode-First创建表,运行时

是否可以通过使用EF Code-first在运行时创建表? 我可以使用C#CodeDOM(reflection)在运行时创建我的模型类,但我无法在运行时设置我的Dbcontext类的dbSet属性。 你的想法是什么? 什么是在运行时动态创建表的最佳解决方案?…有些人对我说,唯一的方法是使用经典的ADO.Net 。

entity framework6 – 定时查询

我正在使用Entity Framework 6,它是非常棒的数据库拦截器function,用于记录从应用程序数据库发送的查询。 但是,我正在努力为这些查询计时,我有一个长时间运行的查询,返回数十万到数百万行,因此需要大约6到15秒,具体取决于此查询将返回的数据量。 entity framework返回一个SqlDataReader,因为我无法获得获取结果所需的确切时间。 我想知道从查询发送到读取最后一行的时间的完整执行时间。 有没有办法可以做到。

更改entity framework中的命名空间

我试图更改entity framework生成器使用的类名称空间。 当我单击我的实体的设计者Model.edmx时,我可以看到可以更改命名空间的地方: 命名空间 在ConceptualEntityModel属性下。 更改了该命名空间,但什么都没发生。 没工作。 所以,我从这个链接中读到了一些帮助: http://weblogs.asp.net/zeeshanhirani/struggling-through-namespace-in-entity-framework 说我必须更改属性: 自定义工具命名空间 这很好,当我在控制台应用程序中单击.edmx的属性时,那里有属性。 但是当我在Web应用程序中使用相同的东西时,该属性不存在。 只有一个名为Web File Properties的属性文件只有3个属性: 自定义工具 文件名 完整路径 我在这里想念的是什么?

entity framework – 插入具有多个模型和数据库的实体

我将我的域拆分为多个Entity Framework模型。 我有一些跨多个模型的共享实体(名为Lookup),但是,使用在entity framework中使用大型模型中描述的方法将这些实体替换为“使用”引用。 然而,让我的案例稍微独特的是,我还将这些模型分成多个数据库(每个模型一个)。 我在将一个共享实体插入公共数据库时遇到问题。 它失败了,错误: 具有标识“Harmony.Members.FK_ResidentialAddress_ResidenceTypeLookup”的成员在元数据集合中不存在。 它所指的外键在“公共DB”上不存在。 但我也没有在关系的另一边(名为ResidentialAddress)与实体合作; 我甚至没有包含初始化的其他实体的上下文(名为MembersDb)。 但是,两个模型都编译到同一个程序集中。 从 Lookup到ResidentialAddress没有导航属性。 虽然在另一个方向有一个导航属性(我不会坚持 – 只在内存中使用)。 用于CommonDb上下文的EntityConnection的MetadataWorkspace仅使用SSDL / CSDL / MSL显式初始化该数据库所需的数据。 我已经确认没有引用该组架构数据中提到的外键。 var metaAssembly = typeof(CommonDb).Assembly; var schemaResources = new string[] { String.Format(“res://{0}/Common.ssdl”, metaAssembly.FullName), String.Format(“res://{0}/Common.csdl”, metaAssembly.FullName), String.Format(“res://{0}/Common.mdl”, metaAssembly.FullName), } MetadataWorkspace metadata = new MetadataWorkspace(schemaResources, new []{ metaAssembly }); EntityConnection connection = new EntityConnection(metadata, myDatabaseConnection); […]

entity framework添加如果没有更新则不存在

我喜欢AddOrUpdate允许您指定要检查的filter以避免添加重复项的事实。 但我想要没有更新的类似function。 现在我做这样的事情: var checkProfile = from p in db.Profile where p => p.LastName == newProfile.lastName && p => p.FirstName == newProfile.firstName && p => p.Middle== newProfile.middle select p; if (checkProfile.FirstOrDefault() == null) { db.Profile.Add(newProfile); db.SaveChanges(); } 我知道我可以这样做: db.Profile.AddOrUpdate(p => new {p.LastName, p.FirstName, p.Middle}, newProfile); db.SaveChanges(); 但我宁愿在这种情况下跳过修改数据。 第一个例子做了我想要的,但有更多的代码。 在第一个例子中是否有更简单/更清洁的方式来做我想要的事情? 更新: 我喜欢Ognyan Dimitrov的建议。 我正在尝试实现它。 我的模型inheritance自BaseEntity。 我可以在那里放一个通用版本吗? […]

存储更新,插入或删除语句影响了意外的行数(0)EntityFramework

当我尝试保存对上下文所做的更改时,我不断收到以下错误: 存储更新,插入或删除语句会影响意外的行数(0)。 自实体加载后,实体可能已被修改或删除。 刷新ObjectStateManager条目。 我有以下课程: 人 public class Person : IPerson { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Name { get { return FirstName + ” ” + LastName; } set{} } public string Email { […]

ASP.NET MVC中的数据库上下文和返回动态结果集

在MVC 4和EF 5中,我想运行动态查询。 var returndata = Context.Database.SqlQuery(Type, strsql, null); 我不知道,它会返回多少个字段并命名。 在这个结果中,我想制作将在视图上显示的表结构。 问题:我应该把什么作为类型传递? 我的查询返回以下结果: 领域1,领域2,领域3,领域4,领域5 ROW1 … 行2 .. 感谢任何建议。

如何在没有调用的情况下合并两个C#Lambda表达式?

我想合并以下表达式: // example class class Order { List Lines } class OrderLine { } Expression<Func<Order, List>> selectOrderLines = o => o.Lines; Expression<Func<List, Boolean>> validateOrderLines = lines => lines.Count > 0; // now combine those to Expression<Func> validateOrder; 我使用selectOrderLines上的调用并将结果提供给validateOrderLines,但是因为我在Entity Framework中使用这些表达式,我必须实际创建一个干净的表达式,它应该代表: Expression<Func> validateOrder = o => o.Lines.Count > 0; 我怎样才能做到这一点?