1

ここで頭をかいてます。SQLクエリに入力するためのフィールドを持つブートストラップモーダルがあります。私が渡すクエリは、コントローラーへの AJAX 呼び出しを使用し、以下のコードを使用して SQL クエリを実行し、JSON オブジェクトを返します。このようなもの:

context.Database.SqlQuery(typeof(object), query);

しかし、私が得るのは空のオブジェクトだけです。列がわからない場合、型を渡すことができません。たとえば、次のようなことができます。

public class CusType {
    public CusType(){}
    public int Id { get; set; }
    public string Name { get; set; }
}

そして、次のようにします。

context.Database.SqlQuery(typeof(CusType), query);

しかし、列を知らない、または知らない場合、それは役に立ちません。ExpandoObjects を使用してアイデアを試してみました。例:

List<string> columns = new List<string>();
string tmpCol = query;
string[] seperator = new string[] { "from" };
tmpCol = query.ToLower()
    .Replace(@"\s+", "")
    .Replace("select", "");
tmpCol = tmpCol.Split(seperator, 1, StringSplitOptions.RemoveEmptyEntries)[0];
for (int i = 0; i < tmpCol.Split(',').Length; i++)
{
    columns.Add(tmpCol.Split(',')[i]);
}
dynamic data = new ExpandoObject();
IDictionary<string, object> props = (IDictionary<string, object>)data;
foreach (var column in columns)
{
    props.Add(column.ToString(), column.ToString());
}

return context.Database.SqlQuery(data.GetType(), query);

しかし、クエリを実行したいときはどうすればよいでしょうか?

context.Database.SqlQuery(data.GetType()??, query);

data.GetType() を入れても、空のオブジェクトが返されます。

両方の例 (typeof(object) と typeof(data.GetType()) を使用) で、次の JSON オブジェクトが返されます。

[{},{},{},{},{},{},{},{},{},{},{},{},{}]

アイデア/提案はありますか?

4

1 に答える 1

2

Entity Framework は、指定された型に基づいてモデルを作成します。別のものを使用するか、DataReader を使用して古い学校に行く必要があります。

于 2015-04-11T07:56:52.420 に答える