我正在使用Entity Framework v4。 我遵循了书呆子晚餐教程中的说明 。 我目前处于开发模式(没有发布到任何更高的环境),并希望在每个新的部署中重新创build表,因为模型仍然是高度不稳定的,我不在乎保留数据。 但是,这不会发生。 表格不被创build/修改,或者任何发生在数据库中的事情。 如果我使用包pipe理器命令迁移到迁移模型:enable-migrations,add-migration(initial),这可以工作并使用我的迁移。 但是,由于我不想进行粒度迁移,只想要我的初始创build脚本,所以我不得不删除migrations文件夹,每次都要重新执行命令(enable-migrations,add-migration)并手动删除数据库我改变了一切。 如何首先发生代码的拖放/创build行为?
我的项目中有多个类(包括TPT)。 每个POCO都有一个BaseClass ,它有一个GUID (称为GlobalKey )作为主键。 首先我使用DataAnnotations来创build正确的外键。 但是,我有问题同步相应的GUID与对象本身。 现在我只想要一个虚拟导航属性,以便数据库中的GUID字段由NamingConvention创build。 但字段名称总是加上一个下划线,后面跟着GlobalKey (这是正确的)。 当我想删除下划线时,我不想通过stream畅API中的所有POCO来执行此操作: // Remove underscore from Navigation-Field modelBuilder.Entity<Person>() .HasOptional(x => x.Address) .WithMany() .Map(a => a.MapKey("AddressGlobalKey")); 任何想法通过覆盖一个约定为所有POCOS做这个? 提前致谢。 安德烈亚斯
entity framework代码首先将根据模型在数据库中自动创build一个表。 有没有一个属性可以避免这种情况?
数据库已成功创build(与表一样),但不会播种。 我花了好几个小时,读了大量的文章,但一直没有得到它。 有什么build议么? 在附注中,是否可以调用初始化程序,而不必在客户端中引用我的DatabaseContext? 我已经包含了所有我能想到的相关代码。 如果有其他事情会有所帮助,请让我知道。 我试过的东西: 我删除了我的连接string(因为它默认为sqlexpress,只是名称改变了) 我将DropCreateDatabaseIfModelChanges更改为DropCreateDatabaseAlways,仍然相同。 编辑:真奇怪的事情是一次,但我不知道如何或为什么它再次打破。 我假设连接string,但谁知道。 DatabaseInitializer.cs public class DatabaseInitializer : DropCreateDatabaseIfModelChanges<DatabaseContext> { protected override void Seed(DatabaseContext context) { // Seeding data here context.SaveChanges(); } } DatabaseContext.cs public class DatabaseContext : DbContext { protected override void OnModelCreating(DbModelBuilder mb) { // Random mapping code } public DbSet<Entity1> Entities1 { get; set; […]
我怎样才能在entity framework代码中使用数据库视图,
软件包pipe理器控制台中的Update-Database失败。 我已经使用了Entity Framework 6.x和代码优先的方法。 错误是 “数据库中已经有一个名为'AboutUs'的对象。” 我该如何解决这个问题? internal sealed class Configuration : DbMigrationsConfiguration<Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext> { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = false; } protected override void Seed(Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext context) { } } 我的DbContext是: public class JahanBlogDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim> { public JahanBlogDbContext() : base("name=JahanBlogDbConnectionString") { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<JahanBlogDbContext>()); } protected override void […]
我以为我会用Scott Guthrie在Entity Framework 4的代码优先的开发中的最新post进行实验。而不是使用Sql Server,我试图使用MySql。 这里是我的web.config(这是一个Asp.Net MVC 2应用程序)的相关部分: <connectionStrings> <add name="NerdDinners" connectionString="Server=localhost; Database=NerdDinners; Uid=root; Pwd=;" providerName="MySql.Data.MySqlClient"/> </connectionStrings> <system.data> <DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data> 就像教程,我期待EF4自动生成我的数据库。 相反,它会抛出一个ProviderIncompatibleException,内部exception抱怨NerdDinners数据库不存在。 很公平; 我去为它创buildMySql数据库,只是为了看看事情是否会起作用,并得到另一个ProviderIncompatibleException。 这一次,“DatabaseExists不被提供者支持”。 我承认,这是我第一次深入研究Entity Framework(我大部分都是Linq to Sql),而这些都是在上周发布的Code-First CTP上运行的。 这就是说,我在这里做错了什么,或者是一个可以解决的已知问题?
我有一个使用EF代码优先的asp.net MVC3项目。 对于我的unit testing,我一直在使用SQL Server CE 4.0和SQL Server 2008 Express。 EF和预期一样完美地生成了我的数据库。 但是,当我在unit testing之外运行我的应用程序并将其指向我的连接string时,出现错误 ProviderIncompatibleException:提供程序没有返回ProviderManifestTokenstring 我已经阅读了MS文档,看起来这是EF模型生成的SqlVersion标记。 问题是我正在使用代码的第一种方法,所以我没有.edmx文件,也不知道在哪里指出我的元数据信息,因为数据库尚未生成。 我知道我的连接string只要db名称,用户名和传递是正确的,因为将它们更改为错误的值将引发预期的错误。 不知道从哪里开始。 谢谢。 这是我的连接string: <connectionStrings> <add name="SqlConnection" providerName="System.Data.SqlClient" connectionString="Data Source=WORKSTATION\SQLEXPRESS;Initial Catalog=CodeFirst;Integrated Security=False; Persist Security Info=False;User ID=CodeFirst_user;Password=password1;Connect Timeout=120;MultipleActiveResultSets=True;"/> </connectionStrings>
我似乎无法完成这项工作 class Member { public virtual IList<Member> Friends { get; set; } [Key] public int MemberId { get; set; } public string Name{ get; set; } } 我试图添加映射,但徒劳无功。 有没有办法与CTP5做到这一点?
我想知道为什么在DbContext对象上没有像ObjectContext那样的Detach方法。 我只能假定这种疏忽是故意的,但我很难弄清楚为什么。 我需要能够分离和重新连接实体(例如,将caching放入ASP.NET项目中)。 然而,由于我不能分离一个实体,当我尝试附加一个与前一个上下文关联的实体时,我得到了“一个实体对象不能被IEntityChangeTracker的多个实例引用”exception。 这里有什么指导? 我错过了什么吗?