1

最初に MVC 4、EF 5 コードを使用します。サービス レイヤーはドメイン クラス (POCO) のみと対話し、UI レイヤーは ViewModel クラス (POCO) と対話します。

私の質問:

UI から必須フィールドを指定し、これらのフィールドのみをサービス層のデータベースから取得するにはどうすればよいですか?

4

2 に答える 2

1

Select結果を取得する型 (名前付きまたは匿名) はコンパイル時にわからないため、動的に式を作成するのは簡単ではありません。ここStackOverflowでいくつかの努力を見てきましたが、私の記憶が正しければ、それらは無益でした(現時点では見つけられません)。

できることは、Entity Sqlを使用してクエリ文字列を作成することです。

var queryString = string.Format("SELECT {0} FROM MyTable"
                               , string.Join(",",fieldsFromUi); // WHERE...?
var q = new ObjectQuery<DbDataRecord>(queryString , context);

はインスタンスですcontext。表示する値を選択できる辞書のような構造です。ObjectContextDbDataRecord

于 2013-01-28T09:23:09.007 に答える
0

これは MVC の賭けの練習です。より良いのはviewmodelを使用することです。viewmodelとrequiry listを使用できます。たとえば、これはビューモデルであり、このモデルをビューに渡す必要があります

public class LoginPageVM
{
    [Required(ErrorMessage = "Are you really trying to login without entering username?")]
    [DisplayName("Username/e-mail")]
    public string UserName { get; set; }
    [Required(ErrorMessage = "Please enter password:)")]
    [DisplayName("Password")]
    public string Password { get; set; }
    [DisplayName("Stay logged in when browser is closed")]
    public bool RememberMe { get; set; }
}

ビューで

@model CamelTrap.Models.ViewModels.LoginPageVM

@using (Html.BeginForm()) {
    @Html.EditorFor(m => m);
    <input type="submit" value="Save" class="submit" />
}

そしてコントローラーで

[HttpGet]
public ActionResult LoginPage()
{
    return View();
}

[HttpPost]
public ActionResult LoginPage(LoginPageVM model)
{
    ...code to login user to application...
    return View(model);
}

ここに画像の説明を入力

于 2013-01-28T09:00:15.007 に答える