Tag: entity framework 4.1

使用reflection将属性为IDbSet 的属性复制到另一个具有相同名称的List 的类上的属性?

我们在unit testing中有一个场景,我们创建了一个实现IDbSet的FakeDbSet。 在FakeUnitOfwork中,我有IDbSets属性并使用FakeDbSet进行新编辑。 无需在我的Commit方法中写出每个不同的属性,我试图使用reflection来迭代FakeUnitOfWork中的属性。 然后,我想将属性值复制到具有相同类型的List 属性的不同类。 所以我的FakeUnitOfWork中可能有一个属性: IDbSet Users {get {return _users ?? (_users = new FakeDbSet());} 在我的假数据存储中,我有这个属性: List Users {get;set;} 这是我到目前为止的情况: public void Commit() { foreach (var property in typeof(TestUnitOfWork).GetProperties()) { var testContextType = typeof (TestDataContext).GetProperty(property.Name); //I then want to do a ToList() on the TestUnitOfWork IDbSet properties to push them into the TestDataContext. […]

EF4.1(代码优先) – 如何指定复合关系

在Linq to SQL中,我可以指定一个不必依赖于数据库中存在的外键和pks的关系,这对于创建这样的复合关系非常有用: public class Equipment_CableNormalised { … [Association(ThisKey = “EquipmentId,PortNumber”, OtherKey = “EquipmentId,PortNumber”, IsForeignKey = false)] public List EquipmentPorts { get; set; } } 然后生成类似于” .. join EquipmentPorts EP on EP.EquipmentId = blah and EP.PortNumber = Blah”的sql。 我可以在EF4.1中使用相同的东西(使用注释或流畅的api)吗? 我知道你可以指定复合键并使用[Keys]和[ForeignKeys]属性,但这种关系不会映射到键…

如何使用Code First Entity Framework 4.1获取完整对象

我试图作为JSON返回完全深的对象(填充所有外键关系)但我得到所有引用对象的空值。 以下是获取对象的调用: public ActionResult GetAll() { return Json(ppEFContext.Orders, JsonRequestBehavior.AllowGet); } 这是Order对象本身: public class Order { public int Id { get; set; } public Patient Patient { get; set; } public CertificationPeriod CertificationPeriod { get; set; } public Agency Agency { get; set; } public Diagnosis PrimaryDiagnosis { get; set; } public OrderApprovalStatus ApprovalStatus { get; […]

entity framework代码首先使用T4模板

我将使用T4模板创建代码优先视图,如下面提到的文章所示: 文章在这里 但它导致了一个 运行时exception 如下。 为什么? 我的连接字符串在App.config正确配置。 我的应用程序是基于N层的 。因此DbContext驱动类在数据层中 。 这是我的连接字符串 : 我正在使用EF 4.1和vs 2010。 正在运行的转换:System.Reflection.TargetInvocationException:调用目标已抛出exception。 —> System.ArgumentException:参数’nameOrConnectionString’不能为null,为空或仅包含空格。 at System.Data.Entity.ModelConfiguration.Utilities.RuntimeFailureMethods.ReportFailure(ContractFailureKind contractFailureKind,String userMessage,String conditionText,Exception innerException) 在System.Data.Entity.DbContext..ctor(String nameOrConnectionString) 在D:\ My Blog \ Test Projects \ PawLoyalty \ PawLoyalty \ PawLoyalty.Data \ DataCatalog.cs中的PawLoyalty.Data.DataCatalog..ctor(Boolean allowLazyLoading):第31行 在D:\ My Blog \ Test Projects \ PawLoyalty \ PawLoyalty \ PawLoyalty.Data \ DataCatalog.cs中的PawLoyalty.Data.DataCatalog..ctor():第26行 […]

entity framework类中的两个相同的类类型问题

我正在实现允许用户互相关注的function。 我有数据库表: User{UserId, FirstName, LastName etc.} Followings{FollowerUserId, FollowingUserId, CreatedOnDate etc.} 所以我添加了EF类: public class Follow { [Key, Column(Order = 1)] public Guid FollowerUserId { get; set; } [Key, Column(Order = 2)] public Guid FollowUserId { get; set; } public DateTime CreatedOnDate { get; set; } public virtual User Follower { get; set; } public virtual User […]

如何防止EFvalidation在DBContext.SaveChanges()期间未映射的属性

我有一个用户模型,其中包含两个[NotMapped]字符串属性Password和ConfirmPassword。 这些是未映射的,因为我将密码保存为字节数组(在salting之后),因此在用户模型中有两个额外的属性(映射)InternalPassword和Salt。 问题是当我使用用户模型更改密码时,entity framework抛出DBEntityValidation错误,指出“需要密码属性”。 我在这里理解的是EF在保存之前尝试validation我的模型,并且由于未设置Password / ConfirmPassword,因此抛出此错误。 这提出了以下问题: 1)如果属性密码被明确地设为[NotMapped],为什么EF在保存期间validation它? 2)如果EF在保存期间执行validation,并且在绑定期间也执行相同的操作(控制器操作方法中的IE),它是否会影响性能? (validation两次)3)解决此错误的推荐方法是什么? (如果我将Password属性显式设置为虚拟值,则错误消失。) 编辑:我删除了代码,因为它很长,可能是没有答案的原因。 如果有人想看看,我可以在下面附上。

ICollection上的AsQueryable()是否真的会执行延迟执行?

我正在使用Entity Framework CodeFirst,我使用ICollection作为父子关系 public class Person { public string UserName { get;set} public ICollection Blogs { get; set;} } public class Blog { public int id { get; set; } public string Subject { get; set; } public string Body { get; set; } } 好吧,到目前为止一切正常,但我担心的是,每当我想得到一个人的博客时,我就把它当作 var thePerson = _context.Persons.Where(x => x.UserName = ‘xxx’).SingleOrDefault(); var […]

在entity framework中排序列属性

我在我的应用程序中使用Entity Framework,因此我已将属性对象映射到数据库对象。 已使用Column属性定义属性对象。 现在,我想订购它们,但我找不到订单的Column Attribute中的属性。 我已经包含了System.ComponentModel.DataAnnotations,但仍然没有得到它 提前致谢

使用大于运算符的entity framework字符串

如何使这个查询像在sql中一样工作? 在sql中,我可以在字符串上使用<和>运算符。 我一直在谷歌搜索大约20分钟,但还没有找到解决方案。 我无法将r.ExemptionCode转换为整数,因为它可能具有’91A,9AA,ZZZ,Z01’等值 from r in results where (r.ExemptionCode > “900” || r.ExemptionCode == “701” || r.ExemptionCode == “702” || r.ExemptionCode == “721” || r.ExemptionCode == “724”) select r

无法将扩展方法转换为存储表达式

我有一个扩展方法如下: public static bool SatisfiesSomeCondition(this Post post, SomeObj someObj) { return post.SomeObjId == someObj.SomeObjId; } 而我正试图像这样使用它: var query = ctx.Posts.Where(p => p.SatisfiesSomeCondition(someObj)).ToList(); 但我得到错误: LINQ to Entities无法识别方法’Boolean SatisfiesSomeCondition(xx.xx.xx.Post,xx.xx.xx.SomeObj)’方法,并且此方法无法转换为商店表达式。 如果我将查询更改为: var query = ctx.Posts.Where(p => p.SomeObjId == someObj.SomeObjId).ToList(); 这与方法相同。 它工作正常,并执行预期的T-SQL。 为什么我的第一个查询不起作用? 这是一个静态方法,不能弄清楚如何创建表达式树? (例如WHEREfilter)。 当然,我不必首先实现查询? (这意味着我不希望通过网络回来的记录,我在这里进行分页/排序,所以这不是一个选项)。 当然,我可以使用有效的方法(例如上面的内容),但方法SatisfiesSomeCondition是一种在域中使用的现有方法,我想重用该function,而不是重复它。 有任何想法吗?