Tag: entity framework

entity framework代码优先:迁移失败与更新数据库,强制不必要的(?)添加迁移

我有一个有趣的效果使用迁移(EF 5.0)和代码优先: 我创build了一些带有GUID主键的模型。 (顺便说一句:对我来说,SQL Server使用NEWSEQUENTIALID() ,这似乎是当前版本的默认值) 在某个时候,我激活了迁移。 我添加了一些代码到最初的迁移,这是大多数.Index()根据需要。 当我删除数据库并调用update-database时,出现以下错误: 无法更新数据库以匹配当前模型,因为有未决的更改,并且禁用了自动迁移。 将挂起的模型更改写入基于代码的迁移或启用自动迁移。 将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。 您可以使用“添加迁移”命令将挂起的模型更改写入基于代码的迁移。 我尝试了AutomaticMigrationsEnabled = true ,它不改变或添加任何东西! 但是因为我不想要AutomaticMigrationsEnabled ,我也试着再次删除数据库,名为update-database ,然后add-migration 。 我结束了一个额外的迁移,似乎不会改变任何东西(见下文)。 我也尝试将这些行添加到最初的迁移的底部 – 但是这不会改变任何东西。 其中一个模型: [Table(Speaker.TABLENAME)] public class Speaker : BaseModel { public const String TABLENAME = "Speaker"; [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } [Required] [MaxLength(50, ErrorMessage = "Name must be […]

为什么ObjectStateManager属性不存在于我的数据库上下文中?

我需要从我的数据库上下文返回新添加的对象列表。 我读过,我必须使用ObjectStateManager这个目的。 问题是,我的数据库上下文没有ObjectStateManager属性。 上下文工作正常回溯,添加和更新对象虽然。 我正在使用EF 5.0 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 我能做什么?

entity framework6事务回滚

用EF6你有一个新的交易,可以像这样使用: using (var context = new PostEntityContainer()) { using (var dbcxtransaction = context.Database.BeginTransaction()) { try { PostInformation NewPost = new PostInformation() { PostId = 101, Content = "This is my first Post related to Entity Model", Title = "Transaction in EF 6 beta" }; context.Post_Details.Add(NewPost); context.SaveChanges(); PostAdditionalInformation PostInformation = new PostAdditionalInformation() { PostId = (101), […]

刷新entity framework3.5中的存储过程

我正在使用.NET 3.5 SP1,VS 2008与entity framework。 我最初添加一个存储过程到我的模型,其中2个参数。 后来,我改变了sproc只取1个参数。 我运行了Update Model From Database菜单选项,并确认我的sproc列在“ Refresh选项卡中。 完成向导,清理并重build解决scheme,模型永远不会改变存储的签名。 为什么不更新? 数据库function的更新模型是否被破坏? 我错过了什么吗? 谢谢。

entity framework查询速度慢,但SqlQuery中的相同的SQL很快

我看到一些非常简单的查询使用entity framework代码优先与.NET框架版本4一些非常奇怪的性能。LINQ2Entities查询如下所示: context.MyTables.Where(m => m.SomeStringProp == stringVar); 这需要超过3000毫秒的时间来执行。 生成的SQL看起来很简单: SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp], … FROM [MyTable] as [Extent1] WHERE [Extent1].[SomeStringProp] = '1234567890' 此查询在运行Management Studio时几乎可以即时运行。 当我更改C#代码以使用SqlQuery函数时,它运行5-10毫秒: context.MyTables.SqlQuery("SELECT [Extent1].[ID] … WHERE [Extent1].[SomeStringProp] = @param", stringVar); 因此,完全相同的SQL,所得到的实体在两种情况下都被更改跟踪,但是两者之间的性能差异很大。 是什么赋予了?

可空属性到实体字段,entity framework通过Code First

使用数据注释Required如下所示: [Required] public int somefield {get; set;} 将数据库中的某些字段设置为Not Null ,如何设置字段以允许NULL ?,我尝试通过SQL Server Management Studio进行设置,但Entity Framework将其设置为Not Null 。

“无法删除数据库,因为它目前正在使用”。 怎么修?

有了这个简单的代码,我得到了“不能删除数据库”test_db“,因为它正在使用”(CleanUp方法),因为我运行它。 [TestFixture] public class ClientRepositoryTest { private const string CONNECTION_STRING = "Data Source=.;Initial Catalog=test_db;Trusted_Connection=True"; private DataContext _dataCntx; [SetUp] public void Init() { Database.SetInitializer(new DropCreateDatabaseAlways<DataContext>()); _dataCntx = new DataContext(CONNECTION_STRING); _dataCntx.Database.Initialize(true); } [TearDown] public void CleanUp() { _dataCntx.Dispose(); Database.Delete(CONNECTION_STRING); } } DataContext有一个像这样的属性 public DbSet<Client> Clients { get; set; } 如何强制我的代码删除数据库? 谢谢

如何重命名entity framework5代码首先迁移数据库列而不丢失数据?

我得到了默认的ASP.NET MVC 4模板,并成功运行EF 5.0 Code First Migrations。 但是,当我更新模型属性名称时,相应的表列数据由EF 5.0删除。 是否有可能以自动的方式重命名表列而不丢弃数据?

如何使用Entity Framework Code First Fluent API指定表名

我有一个实体,我将configurationentity framework将其映射到具有不同名称的数据库表。 我可以用Code First DataAnnotations ( DataAnnotations.Schema.TableAttribute )轻松做到这一点。 但由于现在的限制,我必须使用Code First Fluent API (我的域对象将被外部客户端使用,所以它们不应该是特定于技术的 – 例如对DataAnnotations有任何引用) 我在MSDN上search,但没有发现。 那么这是可能的和如何? 谢谢。

与WPF DataBinding一起使用entity framework的最佳实践

我正在构build我的第一个真正的WPF应用程序(即,除了我之外的第一个应用程序),并且我仍然围绕在WPF中执行任务的最佳方式。 这是一个相当简单的数据访问应用程序,使用的还是相当新的entity framework,但是我一直没有find很多的在线指导,一起使用这两种技术(WPF和EF)的最佳方式。 所以我想我会抛弃我如何接近它,看看有没有人有更好的build议。 我在SQL Server 2008中使用了entity framework。EF让我觉得既要复杂得多,又不成熟,但Linq-to-SQL显然已经死了,所以我不妨使用这个技术MS似乎正在关注。 这是一个简单的应用程序,所以我还没有看到围绕它build立一个单独的数据层。 当我想获取数据时,我使用相当简单的Linq-to-Entity查询,通常直接从我的代码后面查询,例如: var families = from family in entities.Family.Include("Person") orderby family.PrimaryLastName, family.Tag select family; Linq-to-Entity查询返回一个IOrderedQueryable结果,该结果不会自动反映底层数据的变化,例如,如果通过代码向实体数据模型添加新logging,则不会自动反映此新logging的存在引用Linq查询的各种控件。 因此,我将这些查询的结果投入到ObservableCollection中,以捕获基础数据更改: familyOC = new ObservableCollection<Family>(families.ToList()); 然后我将ObservableCollection映射到一个CollectionViewSource,这样我就可以过滤,sorting等,而不必返回到数据库。 familyCVS.Source = familyOC; familyCVS.View.Filter = new Predicate<object>(ApplyFamilyFilter); familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("PrimaryLastName", System.ComponentModel.ListSortDirection.Ascending)); familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("Tag", System.ComponentModel.ListSortDirection.Ascending)); 然后,我绑定各种控件,而不是那个CollectionViewSource: <ListBox DockPanel.Dock="Bottom" Margin="5,5,5,5" Name="familyList" ItemsSource="{Binding Source={StaticResource familyCVS}, Path=., Mode=TwoWay}" IsSynchronizedWithCurrentItem="True" ItemTemplate="{StaticResource familyTemplate}" […]