使用Entity Framework 5.0,我试图在我的MVC站点的启动例程中手动迁移我的代码优先数据库.为此,我首先创建一个DbContext实例,然后运行以下代码:
var migrator = new MigrateDatabaseToLatestVersion<DataContext, Configuration>();
migrator.InitializeDatabase(this.dataContext);
Run Code Online (Sandbox Code Playgroud)
我假设与dataContext的连接关联的数据库将是迁移的数据库.尽管事实并非如此.相反,它总是尝试在本地SQLExpress实例上迁移数据库.
MigrateDatabaseToLatestVersion构造函数存在重载,它接受数据库连接字符串名称,但我的项目使用的是Azure,并且不使用标准的ConnectionStrings配置部分.理想情况下,我只是传递一个连接字符串,我可以使用它.这可能吗?
我从项目中删除了开发数据库和Migrations文件夹.使用单元测试运行时,将重新创建项目开发数据库.我不明白为什么运行update-database给了我
PM> Update-Database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying code-based migrations: [201302201840012_wieleDoWielu].
Applying code-based migration: 201302201840012_wieleDoWielu.
Run Code Online (Sandbox Code Playgroud)
为什么要迁移:201302201840012_wieleDoWielu会被记住?我该如何删除它?存放在哪里?
最好的问候PrzemysławStaniszewski
我正在创建一个MVC应用程序,我经常添加新类.由于类彼此相关并且已经创建的表中的测试数据没有意义,我更喜欢使用AutomaticMigrations.
我使用以下命令将数据库设置为初始状态.
Update-Database –TargetMigration: $InitialDatabase
Run Code Online (Sandbox Code Playgroud)
但问题是它总是不起作用.它出错的可能原因是什么?我不熟悉Code First Migrations.
在运行时声明DbContext已更改时,通常会抛出该错误.在启用迁移之前,我确保现有表中没有与已删除表的依赖关系.我也收到一个错误
Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong.
Run Code Online (Sandbox Code Playgroud)
我正在寻找有关该主题的一般帮助.
asp.net-mvc entity-framework database-migration ef-migrations
当人在asp.net core 2中自定义Identity类时,表之间的关系不会自动创建。
如何以最简单的方式在表之间创建关系?
用户类别:
public class User : IdentityUser<int>
{
// codes
}
Run Code Online (Sandbox Code Playgroud)
角色类别:
public class Role : IdentityRole<int>
{
public Role() : base()
{
}
public Role(string roleName) : base(roleName)
{
}
}
Run Code Online (Sandbox Code Playgroud)
RoleClaim类:
public class RoleClaim : IdentityRoleClaim<int> { }
Run Code Online (Sandbox Code Playgroud)
UserClaim类:
public class UserClaim : IdentityUserClaim<int> { }
Run Code Online (Sandbox Code Playgroud)
UserLogin类:
public class UserLogin : IdentityUserLogin<int> { }
Run Code Online (Sandbox Code Playgroud)
UserRole类:
public class UserRole : IdentityUserRole<int> { }
Run Code Online (Sandbox Code Playgroud)
UserToken类:
public class UserToken : IdentityUserToken<int> { }
Run Code Online (Sandbox Code Playgroud)
我希望与我的表之间的这种关系相同:
asp.net ef-migrations asp.net-identity asp.net-core asp.net-core-2.0
我每次尝试添加迁移或更新数据库时都使用Entity Framework,代码先建立数据库,然后收到以下错误消息:
PM> update-database
Exception calling "CreateInstance" with "7" argument(s): "Constructor on type 'System.Data.Entity.Migrations.Utilities.DomainDispatcher' not found."
At D:\WTS Projects\ModelCalibration\packages\EntityFramework.6.2.0\tools\EntityFramework.psm1:783 char:5
+ $dispatcher = $utilityAssembly.CreateInstance(
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : MissingMethodException
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Data.Entity.Migrations.MigrationsDomainCommand.WriteLine(String message)
at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)
我已将项目复制到具有相同版本的Visual Studio,Entity Framework和Windows的另一台计算机上,并且能够完全迁移数据库。我还在两台计算机上的这些文档上下载了示例项目,并且在这台计算机上遇到了相同的异常,但是另一台也没有问题,因此我认为这与我的代码无关。
唯一的我已经能够找到的解决方案是在这个线程在这里,这里的解决办法是重新安装它,我不那么热衷做的窗户。
我还尝试了其他类似SO文章中所说的所有内容,例如尝试在EF 4.3.1中启用迁移(即要重新安装Entity …
c# entity-framework database-migration ef-migrations entity-framework-6
我正在将我的项目从数据库优先迁移到代码优先.
实体框架做了一些很好的工作来创建我的新数据库(应该模仿旧的数据库).
我正在使用数据注释和流畅的API组合来描述我的表.
我的数据库有一些索引,我也希望实体框架能够创建它们.看来,执行此操作的旧方法是定义自己的初始化程序并使用自定义T-SQL.
但是现在我们有了EF迁移,它应该更容易实现.
我似乎无法弄清楚如何将CreateDatabaseIfNotExists <>与自动迁移相结合来创建索引.我尝试使用MigrateDatabaseToLatestVersion <,>但在创建数据库后似乎没有执行迁移.
现在我们有Entity Framework 4.3,在数据库创建上创建索引和约束的正确方法是什么?
是否可以使用nocheck约束在代码优先迁移中更改表?除了通过Update-Database -Script并修改sql语句获取SQL脚本外,我没有找到任何其他方法。
辅助信息:我正在遵循有关复数视力的MVC 4课程问题:我有一个ASP.NET MVC4 Internet应用程序。一切都如本书所述,但enable-migrations进入软件包管理器控制台后出现错误:The project 'somesite.web' failed to build。
我死了吗?
我无法为超过特定点的实体框架中的代码优先迁移而编译我的项目。我正在从xml中读取值以填充表。我有以下代码:
//EnrolmentProgramStartDate
var programQuery = from r in context.EnrolmentPrograms
select r;
var programList = programQuery.ToList<Entities.MetaData.Enrolment.EnrolmentProgram>();
resourceName = "LearnLogicElicos_WebApi.SeedData.MetaData.Enrolment.enrolment_program_start_date.xml";
stream = assembly.GetManifestResourceStream(resourceName);
xml = XDocument.Load(stream);
List<Entities.MetaData.Enrolment.EnrolmentProgramStartDate> enrolmentStartdates = new List<Entities.MetaData.Enrolment.EnrolmentProgramStartDate>();
foreach (var e in xml.Root.Elements("StartDate"))
{
DateTime.TryParse((string)e.Element("Start"), out var startDate);
enrolmentStartdates.Add(new Entities.MetaData.Enrolment.EnrolmentProgramStartDate()
{
PrgmCode = (string)e.Element("ProgramCode"),
StartDate = startDate
});
}
var programStartdateWithFk = (from t1 in enrolmentStartdates
join t2 in programList
on t1.PrgmCode equals t2.PrgmCode
select new Entities.MetaData.Enrolment.EnrolmentProgramStartDate
{
PrgmCode = t1.PrgmCode,
StartDate = t1.StartDate,
EnrolmentProgramFk = t2.PrgmPk
});
context.EnrolmentProgramStartDates.AddRange(programStartdateWithFk); …Run Code Online (Sandbox Code Playgroud) 从体系结构的角度来看:
ef-migrations ×10
asp.net-mvc ×2
c# ×2
.net-core ×1
asp.net ×1
asp.net-core ×1
code-first ×1
indexing ×1