私はwebアプリケーションを構築しています.Net Coreはweb api、angular 2とNHibernateを使用しています。 私は、データベース内の次のテーブルがあります。私はまた、次のを持っているNHibernate json結果へのクエリが予期しないです
[Class(NameType = typeof(Todo), Table = "Todo")]
public class Todo
{
[ID(-2, Name = "ID")]
[Generator(-1, Class = "native")]
public virtual long ID { get; set; }
[Property]
public virtual string Name { get; set; }
[ManyToOne]
public virtual Priority Priority { get; set; }
}
[Class (NameType = typeof(Priority), Table = "Priority")]
public class Priority
{
[ID(-2, Name = "ID")]
[Generator(-1, Class = "native")]
public virtual long ID { get; set; }
[Property]
public virtual string Name { get; set; }
}
:
藤堂
ID
Name
Priority
優先
ID
Name
そして、これらのテーブルの次のマッピングをDTOのリストを作成してクライアントに送信したいjson: この例では、他のいくつかのプロパティを削除しました。私は以下のクエリを実行すると
public class TodoDTO
{
public long ID { get; set; }
public string Name { get; set; }
public Priority Priority { get; set; }
}
:
var session = SessionFactoryConfigurationBase.GetSessionFactory().GetCurrentSession();
var query = session.QueryOver<Todo>();
TodoDTO todoSummary = null;
query.SelectList(list => list
.Select(t => t.ID).WithAlias(() => todoSummary.ID)
.Select(t => t.Name).WithAlias(() => todoSummary.Name)
.Select(t => t.Priority).WithAlias(() => todoSummary.Priority))
.TransformUsing(Transformers.AliasToBean<TodoDTO>());
を結果のJSONはPriority
のID
とName
プロパティを表示しませんが、それは次のことを示しています
[{
"id":1,
"name":"TEST",
"priority":
{
"__interceptor":
{
"persistentClass":"Todo, ApplicationName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"identifier":2,
"isUninitialized":true,
"unwrap":false,
"session":null,
"entityName": "Priority",
"isReadOnlySettingAvailable":false
}
}
}]
のはなぜですID
とName
というプロパティが表示されますが、代わりにクラス定義が表示されますか? 上記のクエリとは別のリストを作成すると、私が最初の場所で期待した結果が得られますが、それはやや面倒です。
--------------------- EDIT ------------------------
public JsonResult GetTodos()
{
var todos = GetTodos();
return new JsonResult(todos);
}
JSONを生成しているのは、どのラインですか?あなたが書いた代替案を見せてもらえますか? – mjwills
結果の 'query'メソッドで' List() 'メソッドを使って結果を '実現した'とは思いません。 –
@David Osborne:私は実際にそれが問題だと確信していますが、私はそれを正確に修正する方法を知らない。 – Bunnynut