小编Ste*_*zer的帖子

自动生成不是Entity Framework中主键的GUID列

我正在从现有的模型和数据库转向Entity Framework.在该数据库中,有几个表具有GUID列,这些表不是主键(或根本不是键!).每个表都有一个ID列.GUID列具有在其上定义的ROWGUIDCOL属性,以及DEFAULT(newid()).

现在,当我插入数据库时​​,我得到了这个列的所有零.

我尝试过使用数据注释:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Guid {get; set;}
Run Code Online (Sandbox Code Playgroud)

这个问题是它丢弃了我的ID列上的标识属性(并给我插入错误).除此之外,我注意到对于以下迁移,EF实际上为up和down方法生成了相同的SQL:

public override void Up()
{

    AlterColumn("dbo.Client", "Guid", c => c.Guid(nullable: false, identity: true));
}

public override void Down()
{
    AlterColumn("dbo.Client", "Guid", c => c.Guid(nullable: false));
}
Run Code Online (Sandbox Code Playgroud)

用生成的sql:

ALTER TABLE [dbo].[Client] ALTER COLUMN [Guid] [uniqueidentifier] NOT NULL
Run Code Online (Sandbox Code Playgroud)

为什么上面的迁移为两个语句创建了相同的sql?如何让EF生成GUID?我可以/必须在客户端(代码)空间中执行此操作吗?如果必须,我怎样才能保证表格的唯一性?

c# sql sql-server entity-framework

5
推荐指数
1
解决办法
2815
查看次数

实体框架正在忽略NotMapped属性

尝试保存更改时收到以下异常:System.Data.SqlClient.SqlException:无效的列名'ClientID'。无效的列名“ ID”。

ClientID属性具有[NotMapped]属性,并且该类没有ID属性。此外,数据库表匹配正确的属性。我知道有时候,当您具有没有关联FK的导航属性时,EntityFramework会创建隐式外键列,但是这里不是这种情况。

public class AccountPreference :  fgleo.Objects.PortfolioManagement.IAccountPreference
{
    #region Constructors

    public AccountPreference() { }

    #endregion

    #region Fields & Properties

    public Guid Guid { set; get; }

    [ForeignKey("Account"), Key]
    public int AccountID { set; get; }
    public virtual tAccount Account
    {
        get;
        set;
    }

    public string Nickname { set; get; }


    public string AccountType { set; get; }


    public string InsuranceCompanyName { set; get; }


    public string PolicyName { set; get; }


    public ContainerType ContainerType { set; get; }


    public …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

4
推荐指数
2
解决办法
1336
查看次数

标签 统计

c# ×2

entity-framework ×2

sql ×1

sql-server ×1