Tag: ef code first

在EF Code First DatabaseIntializer中重用GUID

所以我试图使用EF构建自定义成员资格。 我真的不知道我在做什么,但到目前为止已经相当顺利了。 我在数据库初始化程序步骤,我试图在项目运行时尽快将数据转储到数据库中。 我的类Application.cs使用GUID作为主键,如下所示。 我试图找出如何将GUID添加到数据库中。 我不知道这是否可能,但这正是我想要做的。 我使用了在VS 2012中创建普通Web应用程序项目并尝试使用EF Code First(实践)重新创建该数据库时获得的默认登录数据库。 这是我到目前为止所得到的。 类 public class Applications { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid ApplicationId { get; set; } [StringLength(125)] public string ApplicationName { get; set; } } 在构建时将数据转储到数据库中的初始化程序(不包括种子)。 private static List addApplications() { var apps = new List { new Applications { ApplicationId = Guid.NewGuid(), ApplicationName = “Test Login” […]

entity frameworkRC1 DbContext查询问题

我正在尝试使用entity framework代码首先实现存储库模式rc 1.我遇到的问题是创建DbContext。 我有一个解决IRepository的ioc容器,它有一个contextprovider,它只是在windsor.config文件中用连接字符串通知新的DbContext。 使用linq2sql这部分没问题,但EF似乎很窒息。 我将通过一个例子来描述下面的问题。 我已经拿出代码来简化一些事情,这就是为什么你在这里看不到任何存储库模式的东西。 只是在没有所有额外代码和类的情况下排序正在发生的事情。 using (var context = new PlssContext()) { var x = context.Set(); var y = x.Where(u => u.UserName == LogOnModel.UserName).FirstOrDefault(); } using (var context2 = new DbContext(@”Data Source=.\SQLEXPRESS;Initial Catalog=PLSS.Models.PlssContext;Integrated Security=True;MultipleActiveResultSets=True”)) { var x = context2.Set(); var y = x.Where(u => u.UserName == LogOnModel.UserName).FirstOrDefault(); } PlssContext是我创建DbContext类的地方。 存储库模式对PlssContext一无所知。 我认为我能做的最好的事情就是使用连接字符串创建一个DbContext到sqlexpress数据库并以这种方式查询数据。 在新建了PlssContext对象之后,从上下文中获取了var […]

EF LINQ ToList非常慢

我正在使用ASP NET MVC 4.5和EF6 ,代码首次迁移。 我有这个代码,大约需要6秒钟。 var filtered = _repository.Requests.Where(r => some conditions); // this is fast, conditions match only 8 items var list = filtered.ToList(); // this takes 6 seconds, has 8 items inside 我认为这是因为关系,它必须在内存中构建它们,但事实并非如此, 因为即使我返回0字段,它仍然很慢 。 var filtered = _repository.Requests.Where(r => some conditions).Select(e => new {}); // this is fast, conditions match only […]

使用entity framework代码保存分离的对象图首先导致主键冲突

我正在尝试使用Code First流利的符号保存我已映射到EF6的POCO的对象图。 然而,在保存对象图之后,我偶然发现了主键冲突exception。 对象图非常简单: 一个Issue可以包含多个WorkItems ,每个Author (作为User )。 外部填充对象(使用Web API) 当我尝试使用两个引用同一作者的工作项来保存问题时,我希望插入问题,插入工作项和插入一个作者,另一个要引用或更新。 然而,会发生的问题是插入问题,插入工作项并插入对同一用户的两个引用,从而导致主键冲突。 简化的问题对象: public class Issue { public Issue() { WorkItems = new List(); } public string Id { get; set; } private List _workItems; public List WorkItems { get { return _workItems ?? new List(); } set { _workItems = value; } } } […]

使用EF Code First的多对多关系

我有两个类定义如下: public class Questionnaire { public int QuestionnaireID { get; set; } public string Title { get; set; } public bool Active { get; set; } public virtual ICollection Questions { get; set; } public virtual ICollection Vendors { get; set; } } public class Vendor { public int VendorID { get; set; } public […]

entity framework一对多或一个外键关联

我正在更改现有应用程序的后端以使用Entity Framework Code First。 我已经使用Visual Studio 2015中的内置工具基于我现有的数据库生成POCO类。 这在大多数情况下都是完美的,除了两个类,一对一或零关系。 这些是我的(简化)课程: public class Login { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public int TeamMemberId { get; set; } public virtual TeamMember TeamMember { get; set; } } public class TeamMember { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public virtual Login Login […]

EF5多对多更新已断开连接的方案

我没有找到一个很好的解决方案来解决这个问题(类似的票据在这里EF5更新断开连接图(n层)一对多 )。 我发现并遵循了这个例子: http : //entityframeworktutorial.net/update-many-to-many-entities-in-entity-framework.aspx#.UTBeTDBhif8 。 这工作正常,但它创建了相关实体的副本(使用sql profiler我看到Insert into RelatedEntities ..我希望只是在MyEntities_Related连接表上插入/更新,我不明白为什么EF插入在RelatedEntities表上:( 这是我的代码: public void AddOrUpdate(MyEntity entity) { var dbEntity = _context.MyEntities .Include(e => e.RelatedEntitis) .Where(e => e.ID == entity.ID) .SingleOrDefault(); var newRelated = entity.RelatedEntitis.ToList(); var dbRelated = dbEntity.RelatedEntity.ToList(); _context.Entry(dbEntity).CurrentValues.SetValues(entity); var comparer = new EqualityComparer(); var addedRelated = newRelated.Except(dbRelated, comparer).ToList(); var deletedRelated = dbRelated.Except(newRelated, comparer).ToList(); […]

MVC3中的POCO类和ViewModel

我不是一个经验丰富的MVC3开发人员,但我想成为。 我熟悉POCO类和ViewModels,因为前者描述了数据库的每个类,后者用于mvc3中的强类型视图。 对于经验丰富的开发人员来说,我的问题并不复杂,但我对此感到有些困惑。 问题是,我有一个包含三个项目的解决方案; 我在其中编写了POCO类的Model类库。 这是一个例子: 。 public class Service { [Key] [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)] public int ServiceID { get; set; } //————————————————————// [Required, MaxLength(30)] [LocalizedAttribute(“Name”)] public string Name { get; set; } //————————————————————// [MaxLength(100)] [LocalizedAttribute(“Description”)] public string Description { get; set; } //————————————————————// [Required] public long ModifiedByUserID { get; set; } [ForeignKey(“ModifiedByUserID”)] public virtual User OperatorUser […]

在Entity Framework中获取被忽略的属性

我在EF的框架上工作。 我想获取实体的所有被忽略的属性来构建一些特殊的查询。 我该怎么做? public class Customer { public int Id { get; set; } public DateTime BirthDate { get; set; } public int Age { get; set; } } public class CustomerContext : DbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().Ignore(customer => customer.Age); base.OnModelCreating(modelBuilder); } public DbSet Customers { get; set; } } public […]

entity framework/代码优先/ table-per-typeinheritance – 实现派生类和具体类之间的一对多关联

我在VS2012中使用MVC4,我遵循每个类型的表inheritance方法。 我正在尝试使用Seed()方法将数据添加到我的数据库。 我有以下课程: 房东 [Table(“Landlord”)] public class Landlord : UserProfile { // A Landlord can have many ResidentialProperties [ForeignKey(“ResidentialPropertyId”)] public virtual ICollection ResidentialProperties { get; set; } } ResidentialProperty [Table(“ResidentialProperty”)] public class ResidentialProperty { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int ResidentialPropertyId { get; set; } // A ResidentialProperty has 1 Landlord public virtual int UserId { get; […]