通过实体框架模式创建时,SQL Server 表中未设置默认值

狮子座

我有很多包含默认值的表,例如CreatedDateTime (getutcdate()). 但是现在,值 0001-01-01 00:00:00.0000000 被存储了。

https://stackoverflow.com/a/35093135/7731479 --> 这无效,我必须为每个数据库模型更新(edmx)手动为每个表执行此操作。如何自动将所有 StoreGeneratedPattern 更新为 Computed?或者为什么它不会自动计算?

https://stackoverflow.com/a/43400053/7731479 --> ado.net 生成所有属性,我无法再次生成CreatedDateTime

有没有自动解决方案?

我正在使用实体框架和 ado.net。

Person person = new Person()
{
    Id = id,
    Name = name,
};
AddToPerson(person);
SaveChanges();

我想在上面使用。我不想使用以下内容并再次分配 CreatedDeteTime,因为它是在 MSSQL 中使用默认值 getutcdate() 分配的。

Person person = new Person()
{
    Id = id,
    Name = name,
    CreatedDeteTime = DateTime.UtcNow;
};
AddToPerson(person);
SaveChanges();
狮子座

我找到了两个解决方案:

1- 此解决方案解决所有具有相同属性的实体,例如CreatedDateTime

public partial class MyEntities : ObjectContext
    {
        public override int SaveChanges(SaveOptions options)
        {
            this.DetectChanges();

            foreach (var insert in this.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Added))
            {
                if (insert.Entity.GetType().GetProperty("CreatedDateTime") != null && insert.Entity.GetType().GetProperty("CreatedDateTime").GetType().Name == "DateTime" && (DateTime)(insert.Entity.GetType().GetProperty("CreatedDateTime").GetValue(insert.Entity)) == DateTime.Parse("0001-01-01 00:00:00.0000000"))
                    insert.Entity.GetType().GetProperty("CreatedDateTime").SetValue(insert.Entity, DateTime.UtcNow, null);                
            }
            return base.SaveChanges(options);
        }
    }

参考:https : //stackoverflow.com/a/5965743/7731479

2-

public partial class Person
        {
            public Person()
            {
                this.CreatedDateTime = DateTime.UtcNow;
            }
        }

参考:创建实体框架模型时忽略数据库默认值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架-在SQL Server表中未设置默认值

来自分类Dev

实体框架-在SQL Server表中未设置默认值

来自分类Dev

如何将Microsoft SQL Server表中的默认值设置为昨天的日期

来自分类Dev

为SQL Server中的空行设置零默认值

来自分类Dev

在 SQL Server 星型架构的事实表中设置默认值的最有效方法

来自分类Dev

在非null列SQL Server中插入null值时如何设置默认值?

来自分类Dev

当列为空时,SQL Server如何设置默认值

来自分类Dev

在SQLite中创建表时设置默认值

来自分类Dev

如何在SQL Server 2008中使用Alter Table语句设置默认值

来自分类Dev

如何在 SQL Server 2008 R2 复制的架构中包含默认值设置

来自分类Dev

通过实体框架在SQL Server中保存Null值

来自分类Dev

通过实体框架提高SQL Server中的搜索性能

来自分类Dev

在SQL查询中设置默认值

来自分类Dev

通过实体框架将表值类型传递给SQL Server存储过程

来自分类Dev

SQL Server-默认值

来自分类Dev

如何在SQL Server中使用alter设置列的默认值?

来自分类Dev

在SQL Server中将datetime列的默认值设置为24h格式

来自分类Dev

使用Upsert更新为true时未设置默认值

来自分类Dev

使用 rest api 复制文件时未设置列的默认值(SharePoint 2013 独立版)

来自分类Dev

在yii中创建和更新时设置默认值

来自分类Dev

将默认值传递给表值参数-SQL Server

来自分类Dev

在android sqlite中创建表时插入默认值

来自分类Dev

SQL Server:验证XML列的默认值时出错

来自分类Dev

将列添加到SQL Server数据库中的表中,并使用大小写作为默认值

来自分类Dev

实体框架中的NEWID()SQL Server函数

来自分类Dev

在实体框架中从SQL Server告诉MySQL

来自分类Dev

值为null时在查询中设置默认值

来自分类Dev

当StoreGeneratedPattern =计算时,覆盖实体框架中的默认值

来自分类Dev

在SQL Server的插入中获取用作默认值的序列号

Related 相关文章

  1. 1

    实体框架-在SQL Server表中未设置默认值

  2. 2

    实体框架-在SQL Server表中未设置默认值

  3. 3

    如何将Microsoft SQL Server表中的默认值设置为昨天的日期

  4. 4

    为SQL Server中的空行设置零默认值

  5. 5

    在 SQL Server 星型架构的事实表中设置默认值的最有效方法

  6. 6

    在非null列SQL Server中插入null值时如何设置默认值?

  7. 7

    当列为空时,SQL Server如何设置默认值

  8. 8

    在SQLite中创建表时设置默认值

  9. 9

    如何在SQL Server 2008中使用Alter Table语句设置默认值

  10. 10

    如何在 SQL Server 2008 R2 复制的架构中包含默认值设置

  11. 11

    通过实体框架在SQL Server中保存Null值

  12. 12

    通过实体框架提高SQL Server中的搜索性能

  13. 13

    在SQL查询中设置默认值

  14. 14

    通过实体框架将表值类型传递给SQL Server存储过程

  15. 15

    SQL Server-默认值

  16. 16

    如何在SQL Server中使用alter设置列的默认值?

  17. 17

    在SQL Server中将datetime列的默认值设置为24h格式

  18. 18

    使用Upsert更新为true时未设置默认值

  19. 19

    使用 rest api 复制文件时未设置列的默认值(SharePoint 2013 独立版)

  20. 20

    在yii中创建和更新时设置默认值

  21. 21

    将默认值传递给表值参数-SQL Server

  22. 22

    在android sqlite中创建表时插入默认值

  23. 23

    SQL Server:验证XML列的默认值时出错

  24. 24

    将列添加到SQL Server数据库中的表中,并使用大小写作为默认值

  25. 25

    实体框架中的NEWID()SQL Server函数

  26. 26

    在实体框架中从SQL Server告诉MySQL

  27. 27

    值为null时在查询中设置默认值

  28. 28

    当StoreGeneratedPattern =计算时,覆盖实体框架中的默认值

  29. 29

    在SQL Server的插入中获取用作默认值的序列号

热门标签

归档