Tag: entity framework 4.1

无法将自定义值插入标识列 – entity framework

我试图切换身份以插入我自己的值,我遵循的步骤 将标识列的属性StoredGeneratedPattern值更改为None 通过以xml格式打开,在EDMX文件中将属性StoredGeneratedPattern值更改为None 尝试使用以下代码 using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) { int k = Context.ExecuteStoreCommand(“SET IDENTITY_INSERT dbo.client ON”); Context.ClientInfoes.Add(testclient); result = Context.SaveChanges(); int j = Context.ExecuteStoreCommand(“SET IDENTITY_INSERT dbo.client OFF”); scope.Complete(); } 但我仍然收到错误 当IDENTITY_INSERT设置为OFF时,无法在表中插入标识列的显式值 我错过了什么吗? 还有其他选择吗?

ASP.NET MVC与EF 4.1导航属性

经过几天的学习EF了解(有点……)它是如何工作的,我终于意识到我可能有一个大问题。 想象一下,我有两个实体: Pais和UF 。 它们之间的关系是Pais (0..1) … (*) UF 。 截图: http : //i.imgur.com/rSOFU.jpg 。 说,考虑到我有一个名为UFController的控制器,它有Edit和Create ,这很好。 我的视图使用EditorFor帮助器(或类似的)作为输入,因此当我提交表单时,控制器将接收一个UF对象,其中包含所有数据(自动),并引用几乎为空的 Pais 。 我的视图代码(部分代码): @* UF attributes *@ @Html.EditorFor(m => m.Sigla) @Html.EditorFor(m => m.Descricao) @Html.EditorFor(m => m.CodigoIBGE) @Html.EditorFor(m => m.CodigoGIA) @* Pais primary key (“ID”) *@ @Html.EditorFor(m => m.Pais.Codigo) // Pais id 控制器Edit动作代码: [HttpPost] public ActionResult Edit(UF uf) […]

entity framework更改跟踪API和参考条目

希望在我的DbContext子类上编写通用审计代码。 foreach (var entry in this.ChangeTracker.Entries()) { if (entry.State == EntityState.Modified) { var entityProperties = entry.Entity.GetType().GetProperties(); foreach (var entityProperty in entityProperties) { DbMemberEntry propertyEntry = entry.Member(property.Name); if (propertyEntry is DbPropertyEntry) { // IsModified available } else if (propertyEntry is DbReferenceEntry) { // IsModified not available } } } } 1)如果我只更改引用属性,则entry.State值为“Unchanged”。 2)即使将第1点设置为“已修改”,DbReferenceEntry类似乎也没有IsModified属性,也没有原始值。 我认为这是可能的,因为EF必须跟踪这个。 有人可以帮忙吗? 谢谢,本

使用Entity Framework SqlQuery填充子属性

鉴于以下POCO Code First Entities public class Customer { public int CustomerId { get; set; } public string CustomerTitle { get; set; } public string CustomerFirstName { get; set; } public string CustomerLastName { get; set; } public ICollection Orders { get; set; } } public class Order { public int OrderId { get; set; } […]

为什么Entity Framework返回空List 而不是空?

我是ASP .NET MVC世界的新手。 也许,这就是我无法向自己解释对我来说是一个令人讨厌的问题的原因。 我有一节有一对多的关系。 class MyClass{ public List otherClasses {get;set;} } 当我持久化这个类的一个实例时,我用空List 填充它的关系 MyClass myClass = new MyClass(){ otherClasses = new List() } context.myClass.Add(myClass); 问题是,当我尝试检索该实例时,由于任何原因,我尝试访问该列表,系统给我一个空参考例外… 我的问题是:为什么EF不返回空列表而不是空列表? 特别是在这种情况下,我用空列表坚持它? 有什么方法可以避免validation实例是否为null?

表映射问题

我在当前项目中使用entity framework4,从几个表中读取数据。 比较使用ADO.net,EF非常简单,只需简单的代码即可完成大量的工作。 但是有一个问题…… e,g有退出表调用表“MTable”我只想从该表中查询两列,但是这个表与其他两个也正在处理它的ppl共享。 他们可能会在此表上添加列或修改约束。 我确定只有一件事是,我要查询的两列他们不会删除它或重命名它。 我的应用程序现在正在运行,但有时会因为我从数据库模式生成代码而中断,每次有人对“MTable”进行更新时,我需要更新应用程序的映射。 有没有办法做“Code-fist”maping,允许我写一个简单的模式映射到“MTable”,并且只映射两列,这样我就可以不管其他ppl在“MTable”上做了什么? ? 谢谢

使用EF DbContext实现2个接口的dependency injection

给定一个实现2个接口的DbContext,如下所示: public interface IQueryEntities { IQueryable Users { get; } IQueryable Computers { get; } // other IQueryable get properties } public interface IUnitOfWork { int SaveChanges(); } public class MyContext : DbContext, IQueryEntities, IUnitOfWork { // implement interfaces using EF } 第一个问题,从命令方面(SaveChanges)中分离出DbContext(IDbSets)的查询方面是一个坏主意吗? 我正在探索上面的重构,因为在很多情况下我们只需要查询数据,而不保存任何内容。 我遇到的问题涉及统一DI,它目前使用IUnitOfWork接口的单个​​每个http上下文生命周期注入MyDbContext。 我不确定如何为IQueryEntities接口设置注入,以便它可以重用已经针对IUnitOfWork接口注入的现有DbContext实例。 或相反亦然。 这有可能吗? 这是当前的生命周期管理器,它在同一个http上下文中重用以前注入的IUnitOfWork实例: public class UnityHttpContextLifetimeManager : LifetimeManager { […]

如何首先使用代码将列添加到链接表

我有一个与Subject实体具有多对多关系的ResearchDatabase实体。 即,研究数据库属于一个或多个主题类别,主题类别包含一个或多个研究数据库。 在我的ResearchDatabaseConfiguration文件中,我有以下映射: HasMany(rd => rd.Subjects) .WithMany(s => s.ResearchDatabases) .Map(m => { m.MapLeftKey( “DatabaseId”); m.MapRightKey( “SubjectId”); m.ToTable( “DatabaseSubjects”); }); 好的,没问题。 作品。 创建一个链接表。 现在我收到了一个新的规范。 每个主题的研究数据库的排序将按字母顺序与最相关的(由用户认为)分开,接着是第二组’如果你没找到它,也试试这些’数据库,也按字母顺序排列。 所以,基本上,我需要另一列来表示数据库是在第一组还是第二组。 类似IsPrimary列的东西,或类似于链接表本身内容的东西。 我希望这是有道理的。 但是,如何在从上面的映射代码创建的链接表中添加一个额外的列?

延迟/延迟加载链接不及时?

有人经历过以下情况吗? 使用引用其他实体的字段validation对象会向您发出错误,指出该字段不存在,并且当您调试程序时,您将检查填充字段的实体。 现在这两次发生在我身上,似乎是延迟加载的一些问题,好像延迟加载没有给出足够快的答案。 我们有这个(简化)模型在哪里 class Survey { … public bool Enabled {get; set;} [Required] public virtual OrganisationalUnit OU {get; set;} … } 如果我们只做Context.Surveys.Single(id)或Context.Surveys.Where(s => s.Id == id) ,更改Enabled字段(或任何其他字段),并执行Context.SaveChanges()它将在10次中的9次抛出validation错误,即OU字段是必需的并且它不存在。 添加.Include(s => s.OU)这个问题就解决了,我认为这就是它的结束。 虽然昨天我再次遇到类似的问题,但代码如下: public class SurveyQuestionMultipleChoiceMultiSelect : SurveyQuestionMultipleChoice { public override IEnumerable validateValue(string _, IEnumerable values) { int ivalue; foreach( string value in values) { bool […]

使用存储库模式实现WCF数据服务

我们在ASP.NET MVC 3应用程序中使用存储库模式。 这意味着,尽管我们使用EF 4.1 Code First来访问后端中的数据,但所有MVC控制器都是通过通用存储库类而不是直接通过DbContext子类来实现的。 简化的代码段: public class MyEntityContext : DbContext, IMyEntityContext { public IDbSet MyEntities { get; set; } … } public class MyEntityRepository : IMyEntityRepository { private IMyEntityContext _context; public IQueryable MyEntities { return _context.MyEntities; } … } public class MyEntityController : Controller { private MyEntityRepository _repository; … } 我们为每个依赖项使用接口和dependency injection。 […]