实体框架提供"类型' T'必须是不可为空的值类型"使用具有可空字段的类时出错

时间:2015-10-07 14:06:02

标签: c# entity-framework-6

我希望通过使用具有通用字段的类来稍微简化我的代码,但EF正在抗议并提供错误消息

  

类型' T'必须是不可为空的值类型才能将其用作   参数' T'在通用类型或方法中,System.Nullable'

这是我的简化代码。基本上,我试图保存有关数字属性的其他数据。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@android:id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:attr/listSeparatorTextViewStyle" />

    <TextView
        android:id="@android:id/summary"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp" />
</LinearLayout>

因此,Equipment的每个数字属性都可以有一个默认值,但默认值可以为null。

Equipment表的基础数据库结构具有字段

  • Id(int,not null)
  • ShaftSpeed_Value(int,not null)
  • ShaftSpeed_DefaultValue(int,null)
  • ShaftSize_Value(真实,非空)
  • ShaftSize_DefaultValue(real,null)

我可以创建一个设备实例并设置值,但是当我尝试将其持久化到数据库时,我得到了这个错误。

但是,如果我按数据类型创建一个类:

public class Equipment
{
    public int Id { get; set; }
    public ComplexValue<int> ShaftSpeed { get; set; }
    public ComplexValue<Single> ShaftSize { get; set; }
}

public class ComplexValue<T> where T : struct, IComparable
{
    public T Value { get; set; }
    public T? DefaultValue { get; set; }
}

它工作正常。

我将通用类型限制为结构,正如我所看到的那样,但这并没有帮助。

欢迎任何想法或建议!

由于

道格

0 个答案:

没有答案
相关问题