使用 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 是对象上的静态方法,并将其从字符串转换回对象(通过解析字符串)。
我想在数据库中保存一个自定义类型 属性,它是 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 是对象上的静态方法,并将其从字符串转换回对象(通过解析字符串)。