使用 Telerik 的 OpenAccess 在数据库中保存自定义类型

Save a custom type in database by using OpenAccess of Telerik

我想在数据库中保存一个自定义类型 属性,它是 class.

要保存的 属性 是 myProperty,在下面的示例中类型为 CustomTypeClass

public class Test
{
    private CustomTypeClass myProperty;

    public CustomTypeClass MyProperty
    {
        get { return myProperty; }
        set { myProperty = value; }
    }
}

因此,要保存在数据库中的值是 ToString 覆盖方法的结果:

public class CustomType
{
    public int Start { get; set; }
    public int End { get; set; }

    public CustomType(int start, int end)
    {
        this.Start = start;
        this.End = end;
    }

    public override string ToString()
    {
        return "[" + this.Start + "," + this.End + "]";
    }
}

我想执行以下代码以保存在数据库中:

CustomType value = new CustomType(3, 5);
Test test = new Test();
test.myProperty = value;

database.Add(test);
database.SaveChanges();

我该怎么做?

目前,我收到以下错误:

Unsupported field-type 'CustomTypeClass' found for field 'myProperty' of class 'Test'. 

Maybe you did not specify the TransientAttribute for this field or the PersistentAttribute is not specified for the referenced class. [class=Test]

我认为您无法做到这一点,因为它不是数据库中的已知属性。但是,我过去所做的是这样的:

//Save logic:
CustomType value = new CustomType(3, 5);
Test test = new Test();
test.myProperty = value.ToString();

database.Add(test);
database.SaveChanges();

然后在 CustomType 上创建静态方法以将其从字符串转换回对象:

var obj = db.Tests.First();
var customType = CustomType.LoadFromString(obj.myProperty);

其中 LoadFromString 是对象上的静态方法,并将其从字符串转换回对象(通过解析字符串)。