我想从 ObjectStateEntry 获取字符串值并具有以下转换器。我的客户类有一个复杂类型的地址字段。但是我的代码无法处理这个。
private static string EntryToString( ObjectStateEntry entry, string fieldName, Context Db)
{
try
{
string fieldValue = "";
int ordinal = 0;
var createdField = entry.CurrentValues.DataRecordInfo.FieldMetadata.FirstOrDefault(f => f.FieldType.Name == fieldName);
var fieldType = createdField.FieldType.TypeUsage.EdmType.Name;
ordinal = createdField.Ordinal;
switch (fieldType)
{
case "String":
fieldValue = entry.CurrentValues[ordinal].ToString();
break;
case "Address"
var obj = entry.CurrentValues[ordinal];
var adr = (Address)obj; // error occurs here
fieldValue = Serialize(adr); // converts to string
break;
// other cases
}
return fieldValue
}
错误信息是
System.InvalidCastException: Unable to cast object of type 'System.Data.Objects.ObjectStateEntryDbUpdatableDataRecord' to type '.DomainClasses.Address'.
域类是
public class Customer
{
public Customer()
{
this.Address = new Address();
}
// other fields
}
[ComplexType]
[Serializable]
public class Address
{
public string AddressLine1 { get; set; }
// other fields
}