簡體   English   中英

在通用方法中將實體用作參數

[英]Use of an entity as a parameter in a Generic method

使用MVC,當我注冊時,我希望能夠在單獨的表(一個帳戶和一個用戶)中創建幾個記錄。

我可以為每個創建設置不同的方法,但是我喜歡學習,我認為我會嘗試僅使用一種方法來使用泛型。 這可能是不合適的,所以請指出是否不合適。

因此register方法中包含以下代碼:

sp_Account spAccount = new sp_Account();
// stripped out code assignations
Create(spAccount);
sp_User spUser = new sp_User();
// stripped out code assignations
Create(spUser);

在谷歌搜索了一段時間之后,我(正確或錯誤地)將Create方法設置如下:

protected ActionResult Create<T>(T modelOf)
        {
          if (ModelState.IsValid)
          {
            Type t = modelOf.GetType();

            switch(t.Name)
              {
              case "sp_Account":
                 sp_Account spAccount = new sp_Account();
                 spAccount = ??????????;
                 db.sp_Account.Add(spAccount );

                 return View(spAccount);
                 break;
              case "sp_User":
                sp_User spUser = new sp_User();
                spUser = ??????????;
                db.sp_User.Add(spUser);

                return View(spUser);
                break;
              }
            db.SaveChanges();
          }

          return View(**********);
        }

請回答2個問題:

  1. ?????????? -如何將通用modelOf分配給特定實體
  2. **********-如何返回通用modelOf作為View的模型

對於這個新問題,如果這是一個愚蠢的問題,請提前道歉。 在此先感謝您的幫助。

更新我想向我擁有的任何實體打開此“創建”方法。

經過進一步的搜索,谷歌搜索最終設法加入了所有信息以制定解決方案。

我正在使用的Create方法現在看起來像這樣:

protected void Create<TEntity>(TEntity modelOf) where TEntity : class, new()
    {
      if (ModelState.IsValid)
      {
        db.Set<TEntity>().Add(modelOf);
        db.SaveChanges();
      }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM