我写了这样的课: class Test { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } [Required] public List<String> Strings { get; set; } public Test() { Strings = new List<string> { "test", "test2", "test3", "test4" }; } } 和 internal class DataContext : DbContext { public DbSet<Test> Tests { get; set; } } 运行代码后: var db = […]
我有一个桌面客户端应用程序使用模态窗口来设置分层对象的属性。 由于这是一个客户端应用程序,并且对DbContext的访问不是线程化的,因此我在主窗体上使用长时间运行的上下文,将其传递给模态子项。 这些模式窗口使用PropertyGrid显示实体属性,也有取消button。 如果修改了任何数据并按下了取消button,则更改将反映在父窗体中(我无法处理DbContext object )。 如果没有调用DbContext.SaveChanges()方法,是否有办法放弃所做的任何更改? 更新:entity framework版本4.4。
我刚刚下载了entity framework6,并创build了一个全新的项目来testing它。 我们目前使用EF 5。 添加完所有的表和存储过程后,我试图build立项目,但我得到的错误: types“System.Data.Objects.ObjectParameter”的值不能转换为“System.Data.Entity.Core.Objects.ObjectParameter”。 types“System.Data.Entity.Core.Objects.ObjectResult(Of DataLibrary.MyStoredProc_Result)”的值不能被转换为“System.Data.Objects.ObjectResult(Of DataLibrary.MyStoredProc_Result)”。 我无法弄清楚为什么这不会开箱即用 EF 5有这样的问题。 我正在使用VS 2012.Net 4.5 Vb.net(也尝试与C#项目…同样的问题) 有任何想法吗? 编辑 : 答案是安装VS 2012的EF6工具。我不知道我必须这样做,因为我认为是在我添加了entity framework包安装。
目前我正在将我的应用程序部署到一个共享的宿主环境,并且代码优先,迁移一直很好,除了一个小小的打嗝。 每次我想要推动网站,我必须使用“更新数据库-script”选项,因为我必须预先为每个表名添加[dbo]因为默认情况下,共享主机将创build一个默认模式名称,该名称与数据库用户名 如果我login到我的共享主机并创build数据库,则必须创build一个用户。 如果我命名该用户pipe理员,那么在以admin身份login时,代码首先创build的表格类似于“[admin]。[BlogPosts]”。 当应用程序运行时,所有的表都被创build,但是我得到一个EFexception,因为它表示“[dbo]。[BlogPosts]”是无效的。 如果我将表的模式名称重命名为“[dbo]”,而不是“[admin]”,修复它。 为了解决这个问题,我必须生成一个手动执行的迁移脚本,并在所有表名之前添加“[dbo]”,因为脚本只是通过名称来引用表,而不是通过它们的模式和名称引用表。 有一个简单的方法来解决这个问题吗? 如果我所要做的只是发布应用程序并且一切正常,那将是如此的美好。 如果不是模式名称的差异,它将是一个一个点击的部署,一切都将是光荣的。
NHibernate和Entity Framework 4.0的主要优点和缺点是什么? (在标记我的问题时,我注意到了比EF更多的NHibernate标签,NHibernate更受欢迎?)
在entity framework中 – 在调用“SaveChanges”之前,有没有办法在事务中检索新创build的ID(标识)? 我需要第二次插入的ID,但它总是返回为0 … ObjectContext objectContext = ((IObjectContextAdapter)context).ObjectContext; objectContext.Connection.Open(); using (var transaction = objectContext.Connection.BeginTransaction()) { foreach (tblTest entity in saveItems) { this.context.Entry(entity).State = System.Data.EntityState.Added; this.context.Set<tblTest>().Add(entity); int testId = entity.TestID; …. Add another item using testId } try { context.SaveChanges(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); objectContext.Connection.Close(); throw ex; } } objectContext.Connection.Close();
有没有人得到新的System.Data.SQLite 1.0.91.0与Visual Studio 201中的entity framework6#? 如果你有,你是怎么做到的? 更新 – 2014年3月20日:System.Data.SQLite 1.0.92.0已经发布,但我没有运气在VS2013创build一个EDMX :(我结束了使用包pipe理器(因为EF6。#。#是新SQLite中的依赖项NuGet包): uninstall-package entityframework -force 重新启动VS2013,然后把旧的EF5放到VS2013从现有的数据库生成一个EDMX: install-package entityframework -version 5.0.0 注意:这不是一个复杂的多表SQLite关系数据库testing,所以我不确定如果我使用任何不止一对导航(FK)关系的东西会出现其他问题:/ EDMX / Model的答案首先:(更新 – 2014年3月2日)我发现了一个解决方法,但它不够一致,需要太多的步骤来认为它是一个有效的解决scheme。 基本上: 你使所有的类文件, 用表连接到现有的SQLite数据库, 请修改web / app.config,使其符合仍然出色的SQLite问题故障单( http://system.data.sqlite.org/index.html/tktview?name=7b8fd3ef77 )中的错误信息,包括伪造cdsl / .ssdl /.msl文件,和 然后在重build项目之前在devise器中手动创build空的EDMX中的所有实体模型,然后… 您右键单击实体并select“从数据库更新”… 有时EF / VS2013将添加.tt / DbContesxt,有时它们不会。 太“打或错”:( 回答“代码优先”有和没有现有的SQLite数据库(基于PMCB,Drexter和Jimi的build议)。 但请注意,您无法在Visual Studio 2013中自动生成任何EF模型或EDMX文件[概念模式定义语言(.CSDL),存储模式定义语言(.SSDL)和映射规范语言(.MSL)]。不要尝试手动创buildEDMX文件,看看它们是否适合EF,即使我做了,在我看来,做所有手动创build/映射/更改/ XML编辑,都会使基于实体的框架的整个目的/概念失败… <connectionStrings> <add name="DogsContext" connectionString="Data Source=|DataDirectory|\dogs.s3db;" providerName="System.Data.SQLite" […]
错误3007:从行186,205开始映射片段时出现问题:将非主键列[WheelID]映射到两个片段中的不同概念侧属性 – 数据不一致是可能的,因为相应的概念侧属性可能是独立修改。 我在网上发现了几处描述这个错误的地方,但是我根本不理解它们。 (困惑的笑脸在这里) 一 二 三 四 这里有一些非常重要的东西,我必须失踪。 你能解释一下吗,这样我就明白了吗? 也许用下面我真实生活的例子? 替代文字http://i39.tinypic.com/2hppnoo.jpg 外键1:N Wheels.Id – > Slices.WheelId 我将它们添加到entity framework中,WheelId在Slices实体中不可见。 替代文字http://i43.tinypic.com/287hq87.jpg 做一些解决方法(在添加表格到EF之前删除数据库中的关系 – 然后重新创build并更新EF)我设法让WheelId留在切片中,但是我得到了上面提到的错误。
我最近更改了一个应用程序使用以下的开发: DropCreateDatabaseIfModelChanges<Context> 使用: public class MyDbMigrationsConfiguration: DbMigrationsConfiguration<GrsEntities> { public MyDbMigrationsConfiguration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; } } 在我的数据库环境中,我有: protected override void OnModelCreating(DbModelBuilder modelBuilder) { // Tell Code First to ignore PluralizingTableName convention // If you keep this convention then the generated tables will have pluralized names. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //set the initializer to migration Database.SetInitializer(new […]
如果你看这里,你会注意到这个人正在显示实体模型图,我想知道如何从我的EntityFramework代码第一类创build一个实体模型图。 试图通过查看代码来记住每件事物如何链接在一起,这只会令人沮丧。