使用Dapper和Entity Framework时放松或禁用表约束?

时间:2012-05-24 21:26:20

标签: entity-framework .net-4.0 edmx dapper

我想使用Dapper.Net ORM和实体框架设置类似dataSet1.EnforceConstraints = false;的内容。

我在VS2010中创建了一个属性:

    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.String ethnicname
    {
        get
        {
            return _ethnicname;
        }
        set
        {
            OnethnicnameChanging(value);
            ReportPropertyChanging("ethnicname");
            _ethnicname = StructuralObject.SetValidValue(value, false);
            ReportPropertyChanged("ethnicname");
            OnethnicnameChanged();
        }
    }

...当valuenull时,我在StructuralObject.SetValidValue...处获得了约束异常。如何以及在何处关闭它?

我的数据通话如下:

    public DAL.Models.PROFILE GetProfile(int profileID)
    {
        using (IDbConnection connection = OpenConnection("MyDBConnectionString"))
        {
            try
            {

                var profiles = connection.Query<DAL.Models.PROFILE>("SELECT * FROM PROFILES WHERE ID=@ID", new { ID = profileID }); // IEnumerable
                var profile = profiles.First<DAL.Models.PROFILE>();

                return profile;
            }
            catch (Exception ex)
            {
                ErrorLogging.Instance.Fatal(ex);
                return null;
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

如果您使用基于自动生成EntityObject的实体,并且您将字段标记为不可为空(您的数据库使其无法为空),则无法关闭此验证。 SetValidValue的第二个参数决定是否允许null。