Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 实体框架下的数据库迁移_Asp.net Mvc 3_Sql Server 2008_C# 4.0_Entity Framework 4.3 - Fatal编程技术网

Asp.net mvc 3 实体框架下的数据库迁移

Asp.net mvc 3 实体框架下的数据库迁移,asp.net-mvc-3,sql-server-2008,c#-4.0,entity-framework-4.3,Asp.net Mvc 3,Sql Server 2008,C# 4.0,Entity Framework 4.3,我在数据库(SQLServer2008)中有一个奇怪的结果 我在一个使用Entity Framework的ASP.NET MVC 3项目中工作,并使用数据库迁移 当我修改数据库的模式时,在配置文件(configuration.cs)的种子方法中,我有以下代码在任何迁移后初始化数据: protected override void Seed(YAnnonce.Core.Repository.AnnonceDbContext context) { var categorieAnnonces =

我在数据库(SQLServer2008)中有一个奇怪的结果

我在一个使用Entity Framework的ASP.NET MVC 3项目中工作,并使用数据库迁移

当我修改数据库的模式时,在配置文件(
configuration.cs
)的种子方法中,我有以下代码在任何迁移后初始化数据:

protected override void Seed(YAnnonce.Core.Repository.AnnonceDbContext context)
{
   var categorieAnnonces = new List<CategorieAnnonce> 
       {
          new CategorieAnnonce{ CategorieAnnonceID = 1, CategorieName="Emploi"},
          new CategorieAnnonce{ CategorieAnnonceID = 2, CategorieName="Stage"},                        
       };

   categorieAnnonces.ForEach(a => context.CategorieAnnonces.AddOrUpdate(a));
   context.Annonces.AddOrUpdate(new Annonce[10]{
            new Annonce {AnnonceID=250, titre = "Offre d'emploi", CategorieAnnonce = categorieAnnonces[0], description="le cabinet de recrutement le pole offre à toute pe",date=DateTime.Now,etat=1, mode = 0, EndDate = DateTime.Now},
            new Annonce {AnnonceID=490, titre = "Formation", CategorieAnnonce = categorieAnnonces[1], description="Le cabinet de recrutement et de formation maroc ",date=DateTime.Now,etat=0, mode = 1, EndDate = DateTime.Now},
            new Annonce {AnnonceID=380,titre = "Freelance", CategorieAnnonce =categorieAnnonces[1], description="Bonjour, jeune développeur en informatique vous assurant ",date=DateTime.Now, etat=1, mode = 1, EndDate = DateTime.Now});
}
protectedoverride void Seed(YAnnonce.Core.Repository.AnnonceDbContext上下文)
{
var categorieAnnonces=新列表
{
新的CategorieAnnonce{CategorieAnnonceID=1,CategorieName=“Emploi”},
新的CategorieAnnonce{CategorieAnnonceID=2,CategorieName=“Stage”},
};
ForEach(a=>context.categorieAnnonces.AddOrUpdate(a));
context.Annonces.AddOrUpdate(新的Annonce[10]{
新Annonce{AnnonceID=250,titre=“Offre d'emploi”,CategorieAnnonce=categorieAnnonces[0],description=“lecabinet de recruement le pole of freátoute pe”,date=DateTime.Now,etat=1,mode=0,EndDate=DateTime.Now},
新Annonce{AnnonceID=490,titre=“Formation”,CategorieAnnonce=categorieAnnonces[1],description=“Le cabinet de recruement et de Formation maroc”,date=DateTime.Now,etat=0,mode=1,EndDate=DateTime.Now},
新的Annonce{AnnonceID=380,titre=“自由职业者”,CategorieAnnonce=categorieAnnonces[1],description=“你好,你的担保人信息的开发”,date=DateTime.Now,etat=1,mode=1,EndDate=DateTime.Now});
}

但问题是,在任何迁移之后,都会将相同的数据添加到数据库中,我不希望出现这种情况。

您必须确定应在哪个状态下使用数据库迁移。有不同的方法可以做到这一点,我建议使用其中的一种。编写类似这样的类,并将种子函数放入其中:

public class DataContextInitializer:DropCreateDatabaseIfModelChanges<YAnnonce.Core.Repository.AnnonceDbContext>
{
    var categorieAnnonces = new List<CategorieAnnonce> 
       {
          new CategorieAnnonce{ CategorieAnnonceID = 1, CategorieName="Emploi"},
          new CategorieAnnonce{ CategorieAnnonceID = 2, CategorieName="Stage"},                        
       };

   categorieAnnonces.ForEach(a => context.CategorieAnnonces.AddOrUpdate(a));
   context.Annonces.AddOrUpdate(new Annonce[10]{
            new Annonce {AnnonceID=250, titre = "Offre d'emploi", CategorieAnnonce = categorieAnnonces[0], description="le cabinet de recrutement le pole offre à toute pe",date=DateTime.Now,etat=1, mode = 0, EndDate = DateTime.Now},
            new Annonce {AnnonceID=490, titre = "Formation", CategorieAnnonce = categorieAnnonces[1], description="Le cabinet de recrutement et de formation maroc ",date=DateTime.Now,etat=0, mode = 1, EndDate = DateTime.Now},
            new Annonce {AnnonceID=380,titre = "Freelance", CategorieAnnonce =categorieAnnonces[1], description="Bonjour, jeune développeur en informatique vous assurant ",date=DateTime.Now, etat=1, mode = 1, EndDate = DateTime.Now});
}
公共类DataContextInitializer:DropCreateDatabaseIfModelChanges
{
var categorieAnnonces=新列表
{
新的CategorieAnnonce{CategorieAnnonceID=1,CategorieName=“Emploi”},
新的CategorieAnnonce{CategorieAnnonceID=2,CategorieName=“Stage”},
};
ForEach(a=>context.categorieAnnonces.AddOrUpdate(a));
context.Annonces.AddOrUpdate(新的Annonce[10]{
新Annonce{AnnonceID=250,titre=“Offre d'emploi”,CategorieAnnonce=categorieAnnonces[0],description=“lecabinet de recruement le pole of freátoute pe”,date=DateTime.Now,etat=1,mode=0,EndDate=DateTime.Now},
新Annonce{AnnonceID=490,titre=“Formation”,CategorieAnnonce=categorieAnnonces[1],description=“Le cabinet de recruement et de Formation maroc”,date=DateTime.Now,etat=0,mode=1,EndDate=DateTime.Now},
新的Annonce{AnnonceID=380,titre=“自由职业者”,CategorieAnnonce=categorieAnnonces[1],description=“你好,你的担保人信息的开发”,date=DateTime.Now,etat=1,mode=1,EndDate=DateTime.Now});
}
然后在main/root web.config文件中,添加以下键以在应用程序运行期间运行上述类:

<appSettings>
    <add key="DatabaseInitializerForType YAnnonce.Core.Repository.AnnonceDbContext, [Project_Name]" value="DataContextInitializer, [Project_Name]" />
</appSettings>

您必须确定应在哪种状态下使用数据库迁移。有不同的方法可以做到这一点,我建议使用其中一种。编写一个类似这样的类,并将Seed函数放入其中:

public class DataContextInitializer:DropCreateDatabaseIfModelChanges<YAnnonce.Core.Repository.AnnonceDbContext>
{
    var categorieAnnonces = new List<CategorieAnnonce> 
       {
          new CategorieAnnonce{ CategorieAnnonceID = 1, CategorieName="Emploi"},
          new CategorieAnnonce{ CategorieAnnonceID = 2, CategorieName="Stage"},                        
       };

   categorieAnnonces.ForEach(a => context.CategorieAnnonces.AddOrUpdate(a));
   context.Annonces.AddOrUpdate(new Annonce[10]{
            new Annonce {AnnonceID=250, titre = "Offre d'emploi", CategorieAnnonce = categorieAnnonces[0], description="le cabinet de recrutement le pole offre à toute pe",date=DateTime.Now,etat=1, mode = 0, EndDate = DateTime.Now},
            new Annonce {AnnonceID=490, titre = "Formation", CategorieAnnonce = categorieAnnonces[1], description="Le cabinet de recrutement et de formation maroc ",date=DateTime.Now,etat=0, mode = 1, EndDate = DateTime.Now},
            new Annonce {AnnonceID=380,titre = "Freelance", CategorieAnnonce =categorieAnnonces[1], description="Bonjour, jeune développeur en informatique vous assurant ",date=DateTime.Now, etat=1, mode = 1, EndDate = DateTime.Now});
}
公共类DataContextInitializer:DropCreateDatabaseIfModelChanges
{
var categorieAnnonces=新列表
{
新的CategorieAnnonce{CategorieAnnonceID=1,CategorieName=“Emploi”},
新的CategorieAnnonce{CategorieAnnonceID=2,CategorieName=“Stage”},
};
ForEach(a=>context.categorieAnnonces.AddOrUpdate(a));
context.Annonces.AddOrUpdate(新的Annonce[10]{
新Annonce{AnnonceID=250,titre=“Offre d'emploi”,CategorieAnnonce=categorieAnnonces[0],description=“lecabinet de recruement le pole of freátoute pe”,date=DateTime.Now,etat=1,mode=0,EndDate=DateTime.Now},
新Annonce{AnnonceID=490,titre=“Formation”,CategorieAnnonce=categorieAnnonces[1],description=“Le cabinet de recruement et de Formation maroc”,date=DateTime.Now,etat=0,mode=1,EndDate=DateTime.Now},
新的Annonce{AnnonceID=380,titre=“自由职业者”,CategorieAnnonce=categorieAnnonces[1],description=“你好,你的担保人信息的开发”,date=DateTime.Now,etat=1,mode=1,EndDate=DateTime.Now});
}
然后在main/root web.config文件中,添加以下键以在应用程序运行期间运行上述类:

<appSettings>
    <add key="DatabaseInitializerForType YAnnonce.Core.Repository.AnnonceDbContext, [Project_Name]" value="DataContextInitializer, [Project_Name]" />
</appSettings>

插入前检查记录是否存在。 如果将数据插入到单个事务中,则可以在插入之前搜索是否存在任何一个记录。 i、 e


插入前检查记录是否存在。 如果将数据插入到单个事务中,则可以在插入之前搜索是否存在任何一个记录。 i、 e

无论如何都应注意此问题-“按键添加或更新实体…相当于数据库术语中的“upsert”操作”无论如何都应注意此问题-“按键添加或更新实体…相当于数据库术语中的“upsert”操作”