Проблема:
При попытке выполнить программу (см.ниже) — исключение "Cannot find converter for the 'Test.Ref' type."
База данных:
create table Entity(
Reference UniqueIdentifier
)
Программа:
using System;
using System.Linq;
using BLToolkit.Data;
using BLToolkit.Data.Linq;
using BLToolkit.Mapping;
namespace Test {
/// <summary>Этот тип описывает ссылку на какой-то другой объект. Предполагается, что у этого типа могут быть проблемно-ориентированные методы</summary>
public struct Ref {
public Guid Value;
}
public partial class RefMapper: MemberMapper {
public override void SetValue(object O, object oValue) {
Ref Value = new Ref();
Value.Value = (Guid?)oValue ?? Guid.Empty;
MemberAccessor.SetValue(O, Value);
}
public override object GetValue(object O) {
return ((Ref)MemberAccessor.GetValue(O)).Value;
}
} // class RefMapper
/// <summary>Объект - некая прикладная сущность</summary>
public class Entity {
//...
// тут могут быть другие поля
//...
[MemberMapper(typeof(RefMapper))]
public Ref Reference;
}
public class Database: DbManager {
private const string CS = @"Data Source=ServerName;Database=DatabaseName;User=UserName;Password=UserPassword";
public Database() : base(GetDataProvider(CS), CS) { }
public Table<Entity> Entities { get { return GetTable<Entity>(); } }
}
class Program {
public static void Main(string[] Args) {
using(Database Db = new Database()) {
var Q = from E in Db.Entities select new { E.Reference };
foreach(var E in Q)
Console.WriteLine(E.ToString());
}
}
}
}
При попытке трассировки выяснилось, что проблема возникает при обработке выражения "new { E.Reference }", метод BuildSql.
Как решить эту проблему ?
Заранее спасибо.