2016-04-15 8 views
1

でUDTのPOCOリスト列私はあなたからの助けを必要と...カサンドラ:C#の

私はC#の列ファミリを生成するために、POCOコードを生成するためのカサンドラのデータベースとDataStaxドライバを使用してソリューションを開発していますデータベースに、問題は、私は誰かが私を助けることができるようにコードの下に、UDTの辞書であると作動していない列をマッピングしたいマッピングしてるということです...

Maps.cs

For<Users>() 
      .TableName("Users") 
      .PartitionKey(key => key.UsersId) 
      .Column(u => u.UsersId, map => map.WithName("UsersId")) 
      .Column(u => u.ImgProfileUrl, map => map.WithName("ImgProfileUrl")) 
      .Column(u => u.Name, map => map.WithName("Name")) 
      .Column(u => u.Gender, map => map.WithName("Gender")) 
      .Column(u => u.UserName, map => map.WithName("UserName")) 
      .Column(u => u.UserPassword, map => map.WithName("UserPassword")) 
      .Column(u => u.DateOfBorn, map => map.WithName("DateOfBorn")) 
      .Column(u => u.OpeningDate, map => map.WithName("OpeningDate")) 
      .Column(u => u.FederalRegistrationCode, map => map.WithName("FederalRegistrationCode")) 
      .Column(u => u.StateRegistrationCode, map => map.WithName("StateRegistrationCode")) 
      .Column(u => u.TownRegistrationCode, map => map.WithName("TownRegistrationCode")) 
      .Column(u => u.Score, map => map.WithName("Score")) 
      .Column(u => u.Type, map => map.WithName("Type")) 
      .Column(u => u.Status, map => map.WithName("Status")) 
      .Column(u => u.DateOfCreated, map => map.WithName("DateOfCreated")) 
      .Column(u => u.Tags, map => map.WithName("Tags")) 
      .Column(u => u.Contacts, map => map.AsFrozen()); 

エンティティ列ファミリ

public class Users 
{ 
    public Guid UsersId { get; set; } 
    public string Name { get; set; } 
    public string ImgProfileUrl { get; set; } 
    public string UserName { get; set; } 
    public string UserPassword { get; set; } 
    public int? Gender { get; set; } 
    public DateTime? DateOfBorn { get; set; } 
    public DateTime? OpeningDate { get; set; } 
    public int Status { get; set; } 
    public string FederalRegistrationCode { get; set; } 
    public string StateRegistrationCode { get; set; } 
    public string TownRegistrationCode { get; set; } 
    public int Type { get; set; } 
    public int Score { get; set; } 
    public DateTime DateOfCreated { get; set; } 
    public IEnumerable<string> Tags { get; set; } 
    public IEnumerable<contactsudt> Contacts { get; set; } 
} 

エンティティUDT

public class contactsudt 
{ 
    public string Phone { get; set; } 
    public string Celular { get; set; } 
    public string Address { get; set; } 
    public long Number { get; set; } 
    public string District { get; set; } 
    public string Postalcode { get; set; } 
    public string Name { get; set; } 
    public string State { get; set; } 
    public string Country { get; set; } 
} 

フィギュレーションインスタンス

new Configuration<contactsudt, Users>(); 
new Table<Users>(UtilsDb.Session).CreateIfNotExists(); 
+1

「動作していません」とは何ですか?コンパイルに失敗し、実行時にエラーが発生しますか? – doctorlove

+0

次のエラーが返されました。CLRタイプのCassandraターゲットタイプがAccessDataCql.Migrations.Entities.contactsudt –

答えて

2

は、あなたがそれを使用しようとする前に/セッションを作成するブートストラップたびにセッションオブジェクトをregistering your UDTしていることを確認します。 LINQはそれについて知っているように、グローバルMappingConfigurationと(あなたが与えた例ではMaps.csに)register your mapsに確認して、また

session.UserDefinedTypes.Define(
    UdtMap.For<contactsudt>() 
     .Automap() 
); 

:たとえば、自動マッピングを使用するには

MappingConfiguration.Global.Define<Maps>(); 

ユーザー定義の型マップが不足しているようです。

+0

ありがとうございました。 –