我在Azure上运行了一个Jobs
网站,我正在尝试使用 Azure的部署插槽,这些网站在使用相同的数据库时基本上总是运行2个(或者更多)网站不同版本的源代码,将其视为 Slot1 具有当前生产代码, Slot2 具有 vNext 代码。
我遇到的问题是,当 Slot2 中有迁移时,即使我们将其设置为不会影响兼容性, EF 也会抱怨数据库与模型的版本不同。
我读过这些问题:
但是在这两种情况下,他们都确保 EF 不会抱怨模型兼容性,因为它使用了一些变体 NOT CHECK 兼容性:
ALTER PROCEDURE [dbo].[ApruebaFecha](
-- Add the parameters for the stored procedure here
@LastDate DATETIME, -- Last Scheduled Date (Range Start)
@Setting1 INT, -- Length of Period
@FechaHasta datetime, -- End of Range
@Result DATETIME OUTPUT)
AS
BEGIN
/* Today */
DECLARE
@TodaysDate DATETIME
SELECT @TodaysDate = CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 101), 101)
SELECT convert(datetime, CONVERT(varchar,@FechaHasta,101),101 )
-- Finding today's date after resetting the time to midnight
/* Schedule Date */
DECLARE
@ScheduleDate DATETIME
-- Find the starting schedule date. If the schedule date is in a previous
-- month, adjust to the current month
-- Adjust the days
SELECT @ScheduleDate = @LastDate
WHILE (@ScheduleDate < @TodaysDate AND @TodaysDate <@FechaHasta)
SELECT @ScheduleDate = DATEADD(day, @Setting1, @ScheduleDate)
IF (@ScheduleDate = @LastDate)
SELECT @ScheduleDate = DATEADD(day, @Setting1, @ScheduleDate)
SELECT @Result = @ScheduleDate
WHILE(@Result <@FechaHasta)
BEGIN
IF(@Result <@FechaHasta)
SELECT @Result = DATEADD(day, @Setting1, @Result)
SET IDENTITY_INSERT [00TblFecha] ON
INSERT INTO dbo.[00TblFecha](idFecha,jobno,fecha)VALUES('','',@Result)
SET IDENTITY_INSERT[00TblFecha] OFF
print @Result
end
END -- GetScheduleDate_Daily_PeriodicDay
但有些事情我不清楚:
如果我更改模型兼容性检查并且没有自动运行迁移,那么如何迁移我的数据库?
我可以使我的EF 6.13 + MVC 5
检查模型兼容性并仅在它被破坏时警告我(比如我删除了一个列或类似的东西,而不是我添加了另一个列,我知道这可能很麻烦但是忍受我,并假设我有这类活动的计划)
答案 0 :(得分:0)
如果我更改了模型兼容性检查并且没有自动运行迁移,那么如何迁移我的数据库?
我在这里给你一个很好的答案:
Dis-Advantages of using EF 6.x.x Code First without Migration
我可以让我的DbContext检查模型兼容性并且只有在它被破坏时警告我(比如我删除了一个列或类似的东西,而不是我添加了另一个列,我知道这可能很麻烦但是请耐心等待我和假设我有这类活动的计划)
要做到这一点并不容易。问题是您必须动态解码模型并将其与MigrationHistory
表的Model列进行比较。
此链接可能对您有意义:
https://romiller.com/2012/03/26/dynamically-building-a-model-with-code-first/
https://romiller.com/2013/02/05/extending-and-customizing-code-first-models-part-1/