C# 使用实体框架日期时间为我的数据库设定种子

C# 使用实体框架日期时间为我的数据库设定种子,c#,sql-server,entity-framework,datetime,C#,Sql Server,Entity Framework,Datetime,我在Entity Framework 6.1.3中使用代码优先工作流,并通过添加如下迁移尝试为数据库添加一些数据: public partial class SeedDatabaseWithBusinesses : DbMigration { public override void Up() { Sql("INSERT INTO Businesses (GooglePlaceId, Name, CurrentMenu, LastUpdated)" +

我在Entity Framework 6.1.3中使用代码优先工作流,并通过添加如下迁移尝试为数据库添加一些数据:

public partial class SeedDatabaseWithBusinesses : DbMigration
{
    public override void Up()
    {
        Sql("INSERT INTO Businesses (GooglePlaceId, Name, CurrentMenu, LastUpdated)" +
            " VALUES ('googlePlaceIdHere', 'Examples Businesses Name', 'Fish and Chips, BLT, Chicken Sandwich', " + DateTime.UtcNow);
    }

    public override void Down()
    {
    }
}
}

但是我为DateTime类型的LastUpdated属性输入DateTime的方式有问题。当我在NuGet中运行更新数据库时,SQL Server 2016引发了一个异常,该异常表示“语法不正确”。我知道日期时间是问题所在,因为异常消息会根据我对日期时间项的操作而变化我尝试了DateTime.Now、DateTime.Now.ToString()和DateTime.UtcNow,这是我在另一个StackOverflow问题上发现的类似但不相同的问题。

我的数据库中的LastUpdated值不可为null,因此如果不执行此操作,我无法以这种方式为数据库设置种子。任何指导都将不胜感激。多谢各位

更新-添加了模型和数据库上下文:



DBContext:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public DbSet<Business> Businesses { get; set; }
        public ApplicationDbContext()
            : base("DefaultConnection", throwIfV1Schema: false)
        {
        }

        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
}
public类ApplicationDbContext:IdentityDbContext
{
公共数据库集业务{get;set;}
公共应用程序上下文()
:base(“DefaultConnection”,throwifvv1schema:false)
{
}
公共静态应用程序上下文创建()
{
返回新的ApplicationDbContext();
}
}
}

如果要插入当前UTC日期时间值,可以使用
GETUTCDATE()
()。您的查询将如下所示:

INSERT INTO Businesses (GooglePlaceId, Name, CurrentMenu, LastUpdated)
VALUES ('googlePlaceIdHere', 'Examples Businesses Name', 'Fish and Chips', GETUTCDATE());
或者,如果您真的想用C#
DateTime进行字符串连接。现在
,您可以这样做:

 Sql("INSERT INTO Businesses (GooglePlaceId, Name, CurrentMenu, LastUpdated)" +
     " VALUES ('googlePlaceIdHere', 'Examples Businesses Name', 'Fish and Chips, BLT, Chicken Sandwich', " + DateTime.UtcNow.ToString("yyyy-mm-dd HH:MM:ss"));

您是否也可以发布您的上下文/数据模型?您是否缺少一些DateTime的引号?比如“…鸡肉三明治”,“+DateTime.UtcNow+”);不确定,但我会尝试一下。顺便说一句,我的猜测是您可能需要对日期进行
转换
转换(以您喜欢的为准),以将日期时间值转换为
日期
时间戳
(以您在db列上使用的类型为准)为什么不使用模型来插入数据呢?met.lord尝试过,但实际上它说整个日期仍然是错误的语法@当然,db列的类型为“datetime”。我更新了我的上下文和模型
 Sql("INSERT INTO Businesses (GooglePlaceId, Name, CurrentMenu, LastUpdated)" +
     " VALUES ('googlePlaceIdHere', 'Examples Businesses Name', 'Fish and Chips, BLT, Chicken Sandwich', " + DateTime.UtcNow.ToString("yyyy-mm-dd HH:MM:ss"));