天道酬勤,学无止境

code-first

In EF4 Code first Collection are not lazy loading?

问题 使用 Microsoft Visual C# 2010 Express,实体框架功能 CTP4。 根据 Scott Gu 的博客,我首先使用代码尝试了 EF4。 但是在检索实体时似乎没有初始化集合。 将产品添加到类别时出现空引用异常。 在我见过的所有示例中,集合从未显式初始化。 我错过了什么? 这是我的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var _db = new Northwind(); var c = new Category { CategoryName = "Testcat" }; _db.Categories.Add(c); _db.SaveChanges(); var c2 = _db.Categories.SingleOrDefault(i => i.CategoryId==c.CategoryId); var pr = new Product { ProductName = "testprod" }; c2

2022-05-12 17:42:12    分类:技术分享    entity-framework   entity-framework-4   lazy-loading   code-first

Multiplicity constraint violated. The role Child_Parent_Target of the relationship Child_Parent has multiplicity 1 or 0..1

问题 我做了很多研究,但没有找到任何与我的问题相匹配的答案。 我什至尝试使用The relationship could not be changed because a or more of the foreign-key properties is non-nullable示例。 没有成功。 我正在使用 Entity Framework 6 Code First (Fluent API)、POCO 类。 我有一个名为 Parent 的类和一个名为 Child 的类 一位父母可以有一个或多个孩子(一对多关系) 所以,在我的 ParentMapping 课程中,我做了: HasMany(p => p.Childs).WithRequired(p => p.Parent).Map(m => m.MapKey("ParentId")); 在我的 ChildMapping 课程中,我做了: HasRequired(p => p.Parent).WithMany(p => p.Childs).Map(m => m.MapKey("ParentId")); 我在坚持父类的同时坚持(插入、更新和删除)我的子 poco 类。 所以每次我保存我的父类时,它的Childs属性中都有一个或多个子对象。 因此,父对象负责持久化其子对象。 我按照上面的示例(请参阅链接)将数据保存到数据库中。

2022-05-07 07:41:09    分类:技术分享    c#   sql-server-2008   entity-framework   code-first   entity-framework-6

EntityFramework SqlQuery does not work with custom mapping (DataAnnotation Column)

问题 我将 EF 5.0 (CodeFirst) 与 VS 2012 一起使用,并且无法使用 SqlQuery 进行查询。 问题发生在实体的属性名称和数据库中列的名称之间的映射中。 我的实体(模型): [Table("Teste")] public class TesteEntity { [Column("Teste_Id")] public int Id { get; set; } [Required] public bool IsAdministrator { get; set; } [Required] public string Name { get; set; } } 当我运行查询时,我得到一个错误。 罗廷: List<TesteEntity> list = dataContext.Database.SqlQuery<TesteEntity>("SELECT * FROM Teste").ToList(); 错误: The data reader is incompatible with the specified '....TesteEntity'. A member of the type, 'Id', does not have a corresponding column in the data reader with the same name

2022-05-06 05:00:17    分类:技术分享    entity-framework   ef-code-first   data-annotations   code-first

Entity Framework - Is there a way to automatically eager-load child entities without Include()?

问题 有没有办法装饰你的 POCO 类来自动加载子实体,而不必每次加载它们时都使用Include() ? 假设我有一辆汽车,具有轮子、门、发动机、保险杠、窗户、排气等复杂类型的属性。在我的应用程序中,我需要从 DbContext 20 个不同的地方加载我的汽车,并使用不同的查询等。我不想每次我想装载我的车时都指定我想包含所有属性。 我想说 List<Car> cars = db.Car .Where(x => c.Make == "Ford").ToList(); //NOT .Include(x => x.Wheels).Include(x => x.Doors).Include(x => x.Engine).Include(x => x.Bumper).Include(x => x.Windows) foreach(Car car in cars) { //I don't want a null reference here. String myString = car.**Bumper**.Title; } 我可以以某种方式装饰我的 POCO 类或我的OnModelCreating()或在 EF 中设置一个配置,告诉它在我装载汽车时只装载汽车的所有部件吗? 我很想这样做,所以我的理解是让我的导航属性虚拟化已经过时了。 我知道 NHibernate 支持类似的功能。

2022-05-04 19:40:18    分类:技术分享    entity-framework-4.1   entity   code-first   entity-framework-4.3

EntityFramework 4.3.1 Code First Navigation Property Mapping and Visibility

问题 这是一个简短问题的长篇介绍,对不起! 我正在使用 EF 4.3.1 Code First,我有以下模型 public class Action { protected Action() { } public virtual int ActionID { get; protected set; } [Required] [StringLength(DataValidationConstants.NameLength)] public virtual string Name {get; set;} [StringLength(DataValidationConstants.DescriptionLength)] public virtual string Description { get; set; } public virtual ICollection<Role> Roles { get; set; } public virtual void AuthorizeRole(Role role) { if (IsRoleAuthorized(role)) throw new ArgumentException("This role is already authorized", "role"); Roles.Add(role); } } public class Role {

2022-05-04 00:15:09    分类:技术分享    entity-framework   many-to-many   code-first   navigational-properties

Entity Framework - Is there a way to automatically eager-load child entities without Include()?

Is there a way to decorate your POCO classes to automatically eager-load child entities without having to use Include() every time you load them? Say I have a Class Car, with Complex-typed Properties for Wheels, Doors, Engine, Bumper, Windows, Exhaust, etc. And in my app I need to load my car from my DbContext 20 different places with different queries, etc. I don't want to have to specify that I want to include all of the properties every time I want to load my car. I want to say List<Car> cars = db.Car .Where(x => c.Make == "Ford").ToList(); //NOT .Include(x => x.Wheels).Include(x => x.Doors

2022-04-30 03:09:46    分类:问答    entity-framework-4.1   entity   code-first   entity-framework-4.3

Best way to control unicity of an attribute using EF Code First

问题 我有一个类 User,它的属性 Name 必须是唯一的。 到目前为止,我已经研究了 3 种检查方法: 注释[StringLength(100)] [Index(IsUnique = true)] public string Name { get; set; } 问题是,通过尝试插入具有重复名称的用户,它会抛出这个 ex:如您所见,我必须导航到内部异常(我不知道是否可能,但我认为它是)最后一个内部异常的消息根本不是用户友好的。 流利的 API https://stackoverflow.com/a/23155759/5750078 我还没有尝试过,但我相信它和 Annotations 有同样的问题。 手动检查 控制器代码: [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Name,Password,Profile")] User user) { if (ModelState.IsValid) { lock (locker) { validateNameUnicity(); db.Users.Add(user); db.SaveChanges(); } return RedirectToAction("Index"); } return View(user); }

2022-04-29 11:39:03    分类:技术分享    c#   entity-framework   code-first

More than one migrations configuration type was found in the assembly ''. Specify the name of the one to use. On add-migration

问题 在包管理器控制台中,我正在尝试更新我的数据库。 当我输入此命令时: add-migration Migration1 我明白了: 在程序集“MyProject.POCO”中发现了一种以上的迁移配置类型。 指定要使用的名称。 我用谷歌搜索了错误,我得到了这个: add-migration InitialBSchema -IgnoreChanges -ConfigurationTypeName ConfigurationB -ProjectName ProjectContextIsInIfNotMainOne -StartupProjectName NameOfMainProject -ConnectionStringName ContextB 但我不知道如何将其应用于我的项目。 我应该为 ConfigurationTypeName 写什么? 或者有没有更简单的方法来做到这一点? 谢谢。 回答1 您的项目中有多个DbContext ,您需要指明哪个将更新数据库。 这可以通过-ConfigurationTypeName来完成。 ConfigurationTypeName 是迁移文件夹中配置类的名称。 Add-Migration -Name Migration1 -ConfigurationTypeName MyProject.POCO.Configuration

2022-04-29 09:06:24    分类:技术分享    c#   migration   code-first   entity-framework-migrations

EntityFramework SqlQuery does not work with custom mapping (DataAnnotation Column)

I'm using EF 5.0 (CodeFirst) with VS 2012 and am having trouble making a query using SqlQuery. The problem happens in the mapping between the property name of the entity and the name of the column in the database. My entity (model): [Table("Teste")] public class TesteEntity { [Column("Teste_Id")] public int Id { get; set; } [Required] public bool IsAdministrator { get; set; } [Required] public string Name { get; set; } } When I run the query, I get an error. Rotine: List<TesteEntity> list = dataContext.Database.SqlQuery<TesteEntity>("SELECT * FROM Teste").ToList(); Error: The data reader is

2022-04-28 20:46:36    分类:问答    entity-framework   ef-code-first   data-annotations   code-first

Multiplicity constraint violated. The role Child_Parent_Target of the relationship Child_Parent has multiplicity 1 or 0..1

I did a lot of research but haven't found any answer that matches my problem. I even tried to use the The relationship could not be changed because one or more of the foreign-key properties is non-nullable example. No success. I'm working with Entity Framework 6 Code First (Fluent API), POCO Classes. I have a class called Parent and a class called Child One Parent can have one or more Childs (one to many relationship) So, in my ParentMapping class I did: HasMany(p => p.Childs).WithRequired(p => p.Parent).Map(m => m.MapKey("ParentId")); and in my ChildMapping class I did: HasRequired(p => p

2022-04-28 18:16:16    分类:问答    c#   sql-server-2008   entity-framework   code-first   entity-framework-6