Tag: entity framework 5

在EF Code First中过滤导航属性

我在EF中使用Code First。 假设我有两个实体: public class Farm { …. public virtual ICollection Fruits {get; set;} } public class Fruit { … } 我的DbContext是这样的: public class MyDbContext : DbSet { …. private DbSet FarmSet{get; set;} public IQueryable Farms { get { return (from farm in FarmSet where farm.owner == myowner select farm); } } } 我这样做,以便每个用户只能看到他的农场,我不必调用每个查询的位置到数据库。 现在,我想过滤掉一个农场的所有水果,我尝试了这个(在Farm类中): […]

无法使用现有数据库运行EF5迁移

首先,我已经阅读了这些问题/答案: EF迁移消息 如何在使用基于代码的迁移时停止添加迁移检查我的数据库没有挂起的迁移? 使EF4.3代码优先迁移忽略挂起的迁移 这些似乎都适用于EF5之前的EF版本,我的情况似乎不适合这些答案。 所以,让我描述一下我的情况。 我的应用程序最初是使用EF4创建的,模型优先。 我使用GUI设计器设计了我的数据库,并用它来生成我的数据库。 我已经运行并将数据收集到数据库中几个月了。 我真的不能丢失这些数据。 我分支我的代码,用NuGet安装EF5,并使用EF Power Tools通过右键单击新的类库项目从我的数据库生成我的模型,然后选择Entity Framework | Reverse engineer code first Entity Framework | Reverse engineer code first 。 我能够顺利地重新引用我的新项目,将我的项目转换为使用新的DbContext而不是ObjectContext,并删除了保存旧模型的EF4类库。 该计划效果很好! 现在,我想尝试自动迁移,我在Ruby on Rails中有一些经验。 这是我做的: Ran Enable-Migrations 。 由于连接字符串和app.config被使用而有点麻烦,但最终得到了它。 但是, 这个MSDN页面说这应该自动生成第一次迁移,以使我达到我已经到达的程度。 它没有。 Ran Add-Migration InitialSchema来完成在步骤1中未自动完成的操作。这有效。 向我的某个模型对象添加了一个属性,然后尝试运行Add-Migration AddSerialToLogEntries ,并显示: 由于以下显式迁移未决,因此无法生成显式迁移:[201307190100268_InitialSchema]。 在尝试生成新的显式迁移之前应用挂起的显式迁移。 尝试在我现有的数据库上应用迁移失败,这并不奇怪。 我上面提到的其他答案基本上说我运气不好,但就像我说的那些是旧版本的entity framework。 我有什么选择吗? 在写这个问题时,我想我可以使用SQL Server Management […]

在EF5 Code First中更改列默认值

我正在尝试使用CF为现有数据库构建模型。 我有一个专栏,我忘了设置一个合理的默认值。 而不是通过改变它来破坏初始迁移的纯度,我只是想我创建另一个迁移(这是迁移的目的,对吧?:) public override void Up() { AlterColumn(“Config”, “DefaultTaxPerDollar”, c => c.Decimal(nullable: false, precision: 19, scale: 5, defaultValue: 0.087m)); } public override void Down() { AlterColumn(“Config”, “DefaultTaxPerDollar”, c => c.Decimal(nullable: false, precision: 19, scale: 5, defaultValue: 0.0m)); } 但是这会产生Column already has a DEFAULT bound to it. 来自SQL Server的错误。 如何使用CF迁移更改默认值? 或者,如何简单地删除默认值(然后使用不同的值重新创建它)? 编辑: 这是SQL生成的: ALTER TABLE […]

X已经包含带有EntityFramework的定义Y? (简单数据库)

我的MS SQL数据库中有3个表,我已经在我导入这3个表的项目中添加了EntityFramework(最新)。 第一个问题是没有构建任何实体,因此我将“代码生成策略”从“ None ”更改为“ Default 。 建成后我得到了 X已经包含Y的定义 在实体的所有属性上。 仔细观察它是否在Users.cs生成了部分ex Users.cs和一个部分User in? 为什么要生成User.cs ? 我在另一个项目中有类似的设置,EF设置相同的设置,没有User.cs ? Edit1 :我可以看到一个不同的东西,那就是在失败的项目中使用强空间类型设置为False,但是不能将它设置为true(灰色)?

无法在LINQ OrderBy中使用属性名进行排序

错误是 LINQ to Entities无法识别方法’System.Object GetValue(System.Object,System.Object [])’方法,并且此方法无法转换为存储表达式。 我的代码是 public static GridResult GetAllUsers(int count, int tblsize,string sortcreteria) { using (UserEntities entity = new UserEntities()) { var data = entity.User_Details.Take(count) .OrderBy(i =>.GetType().GetProperty(sortcreteria).GetValue(i,null)) .Skip(tblsize).ToList(); result.DataSource = data; result.Count = entity.User_Details.Count(); } return result; } 如何使用属性名称作为字符串排序?

为什么Entity Framework会生成嵌套的SQL查询?

为什么Entity Framework会生成嵌套的SQL查询? 我有这个代码 var db = new Context(); var result = db.Network.Where(x => x.ServerID == serverId) .OrderBy(x=> x.StartTime) .Take(limit); 哪个产生了这个! (注意双选语句) SELECT `Project1`.`Id`, `Project1`.`ServerID`, `Project1`.`EventId`, `Project1`.`StartTime` FROM (SELECT `Extent1`.`Id`, `Extent1`.`ServerID`, `Extent1`.`EventId`, `Extent1`.`StartTime` FROM `Networkes` AS `Extent1` WHERE `Extent1`.`ServerID` = @p__linq__0) AS `Project1` ORDER BY `Project1`.`StartTime` DESC LIMIT 5 我应该更改什么才能产生一个选择语句? 我正在使用MySQL和Entity Framework与Code First。 更新 无论传递给OrderBy()方法的参数类型如何,我都有相同的结果。 更新2:定时 […]

ASP.NET MVC 4,EF5,模型中的独特属性 – 最佳实践?

ASP.NET MVC 4,EF5, Code First ,SQL Server 2012 Express 在模型中强制使用唯一值的最佳做法是什么? 我有一个具有’url’属性的places类,对于每个地方都应该是唯一的。 public class Place { [ScaffoldColumn(false)] public virtual int PlaceID { get; set; } [DisplayName(“Date Added”)] public virtual DateTime DateAdded { get; set; } [Required(ErrorMessage = “Place Name is required”)] [StringLength(100)] public virtual string Name { get; set; } public virtual string URL { get; […]

如何使用Entity framework 5和MVC 4创建审计跟踪

我正在使用EF 5构建MVC 4应用程序。我需要执行审计跟踪,即记录最终用户所做的任何更改。 我已经问了几次这个问题,但之前没有真正得到满意的答案。 所以我希望在某个地方添加更多细节…… 目前我有多个存储库 即 public class AuditZoneRepository : IAuditZoneRepository { private AISDbContext context = new AISDbContext(); public int Save(AuditZone model, ModelStateDictionary modelState) { if (model.Id == 0) { context.AuditZones.Add(model); } else { var recordToUpdate = context.AuditZones.FirstOrDefault(x => x.Id == model.Id); if (recordToUpdate != null) { recordToUpdate.Description = model.Description; recordToUpdate.Valid = model.Valid; recordToUpdate.ModifiedDate […]

根据FK表中的记录返回列

我有一个显示供应商的成功查询,但我现在想要添加的是显示已选择或未选择哪些供应商的列(显示为复选框列)。 这些选择存储在VendorsSelected表中,该表包含选择它们的FK ProfileID和UserName。 因此,当当前用户查看供应商时,某些供应商将匹配,而其他供应商则不会。 如何修改查询? 请注意,下面的Where子句将完成仅获取当前用户选择的供应商,但我想要的是所有供应商显示的是他们选择的每个供应商的true / false(复选框)列。 public IEnumerable BrowseVendors() { IQueryable viewModel = _db.VendorProfiles .Include(“VendorsSelected”) .Select(s => new BrowseVendorModel { ProfileID = s.ProfileID, Name = s.Name, CompanyName = s.CompanyName, City = s.City, State = s.State, DateCreated = s.DateCreated }) .Where(x => x.VendorsSelected.Select(s => s.UserName).Contains(HttpContext.Current.User.Identity.Name)) .OrderBy(v => v.ProfileID); return viewModel; }

entity framework5代码优先中的一对一和一对多关系

我试了整整一天才能搞定这个。 我学到了很多关于EF的Fluent API的知识(例如, 这是一篇优秀的文章),但是我没有成功。 我有三个实体: public class Address { [Key] public virtual int AddressId { get; set; } public virtual string AddressString { get; set; } } public class User { [Key] public virtual int UserId { get; set; } public virtual ICollection Addresses { get; set; } } public class House { [Key] public […]