簡體   English   中英

我想使用asp.net mvc 5將一個表中的ID保存到另一個表中

[英]I want to save an ID from a table to another table using asp.net mvc 5

我在CREATE ACTION上的項目ASP.NET MVC 5中遇到問題。 這是我的代碼:

楷模

成員:

  public partial class Member
   {
   public Member()
    {
        this.Acc_Transactions = new HashSet<Acc_Transactions>();
        this.Addresses12 = new HashSet<Addresses1>();
        this.BankingDetails = new HashSet<BankingDetail>();
        this.Contacts = new HashSet<Contact>();
        this.TalentCommitments = new HashSet<TalentCommitment>();
        this.Pledges = new HashSet<Pledge>();
    }

    public int m_id { get; set; }
    public int title_id { get; set; }
    public string initial { get; set; }
    public string fname { get; set; }
    public string lname { get; set; }
    public Nullable<System.DateTime> dob { get; set; }
    public string maritial { get; set; }
    public string religion { get; set; }
    public string occupation { get; set; }
    public string company { get; set; }
    public string Note { get; set; }
    public Nullable<int> Memtype_Id { get; set; }
    public string employed { get; set; }
    public Nullable<System.DateTime> reg_date { get; set; }
    public string AccNumb { get; set; }
    public string Hnumber { get; set; }
    public Nullable<bool> Active { get; set; }
    public string AgeGrp { get; set; }
    public int h_id { get; set; }
    public Nullable<int> postal_addid { get; set; }
    public Nullable<int> phys_addid { get; set; }
    public Nullable<int> maritialid { get; set; }
    public Nullable<bool> PlndGv { get; set; }

    public virtual ICollection<Acc_Transactions> Acc_Transactions { get; set; }
    public virtual Addresses1 Addresses1 { get; set; }
    public virtual Addresses1 Addresses11 { get; set; }
    public virtual ICollection<Addresses1> Addresses12 { get; set; }
    public virtual ICollection<BankingDetail> BankingDetails { get; set; }
    public virtual ICollection<Contact> Contacts { get; set; }
    public virtual Head Head { get; set; }
    public virtual Maritial Maritial1 { get; set; }
    public virtual ICollection<TalentCommitment> TalentCommitments { get; set; }
    public virtual MemberType MemberType { get; set; }
    public virtual ICollection<Pledge> Pledges { get; set; }
    public virtual Title Title { get; set; }
}

}

首長:

public partial class Head
 {
    public Head()
    {
        this.Addresses1 = new HashSet<Addresses1>();
        this.Members = new HashSet<Member>();
    }

    public int h_id { get; set; }
    public string h_initials { get; set; }
    public string fname { get; set; }
    public string lname { get; set; }
    public string Email { get; set; }
    public string cell { get; set; }
    public string cell2 { get; set; }
    public string tel_h { get; set; }
    public string tel_w { get; set; }
    public string fax { get; set; }
    public string h_no { get; set; }
    public int title_id { get; set; }
    public Nullable<bool> active { get; set; }

    public virtual ICollection<Addresses1> Addresses1 { get; set; }
    public virtual ICollection<Member> Members { get; set; }
    public virtual Title Title { get; set; }
}

}

視圖模型

 public class MembersViewModel
{
    public int m_id { get; set; }
    public string titles { get; set; }
    public string initial { get; set; }
    public string fname{ get; set; }
    public string lname { get; set; }
    public string email { get; set; }
    public Nullable<System.DateTime> dob { get; set; }
    public string maritials { get; set; }
    public string religion { get; set; }
    public string occupation { get; set; }
    public string company { get; set; }
    public string note { get; set; }
    public string employed { get; set; }
    public Nullable<System.DateTime> regdate { get; set; }
    public string accNumb { get; set; }
    public string hnumber { get; set; }
    public string agegroup { get; set; }
    public string plandGv { get; set; }
    public string cell { get; set; }
    public string tel_h { get; set; }
    public int title_id { get; set; }
    public string flatName { get; set; }
    public string flatNo { get; set; }
    public string strname { get; set; }
    public string strNo { get; set; }
    public string suburb { get; set; }
    public string city { get; set; }
    public string tel_w { get; set; }
    public string fax { get; set; }
    public string cell2 { get; set; }
    public bool active { get; set; }
    public string province { get; set; }
    public string country { get; set; }
    public int? postalcode { get; set; }
    public string zone { get; set; }
    public bool isHa { get; set; }
    public int addtype { get; set; }
    public int PhysAddID { get; set; }
    public Nullable<int> phys_addid { get; set; }
    public int h_id { get; set; }
    public int maritialid { get; set; }
    public int Memtype_Id { get; set; }

}

}

調節器

采取行動:

  public ActionResult Create()
    {
        ViewBag.phys_addid = new SelectList(db.Addresses1, "PhysAddID", "strNo");
        ViewBag.postal_addid = new SelectList(db.Addresses1, "PhysAddID", "strNo");
        ViewBag.h_id = new SelectList(db.Heads, "h_id", "h_initials");
        ViewBag.maritialid = new SelectList(db.Maritials, "Maritialid", "MaritialType");
        ViewBag.Memtype_Id = new SelectList(db.MemberTypes, "Memtype_Id", "Type");
        ViewBag.title_id = new SelectList(db.Titles, "title_id", "Titles");
        return View();
    }

發布動作:

public ActionResult Create(MembersViewModel memberViewModel)
    {
        var client = new Member
        {
            fname = memberViewModel.fname,
            lname = memberViewModel.lname,
            initial = memberViewModel.initial,
            title_id = memberViewModel.title_id,
            dob = memberViewModel.dob,
            maritial = memberViewModel.maritials,
            religion = memberViewModel.religion,
            occupation = memberViewModel.occupation,
            company = memberViewModel.company,
            Note = memberViewModel.note,
            employed = memberViewModel.employed,
            reg_date = memberViewModel.regdate,

            AccNumb = memberViewModel.accNumb,
            Hnumber = memberViewModel.hnumber,
            Active = memberViewModel.active,
            AgeGrp = memberViewModel.agegroup,
            h_id = memberViewModel.h_id,
        };
        var client1 = new Addresses1();
        var contact = new Contact();
        using (var context = new ParishDBSQLEntities())
        {
            context.Members.Add(client);                
            client1.h_ID = client.h_id;
            client1.strNo = memberViewModel.strNo;
            client1.strname = memberViewModel.strname;
            client1.Suburb = memberViewModel.suburb;
            client1.City = memberViewModel.city;
            client1.Province = memberViewModel.province;
            client1.Country = memberViewModel.country;
            client1.PostalCode = memberViewModel.postalcode;
            client1.zone = memberViewModel.zone;
            client1.flatName = memberViewModel.flatName;
            client1.flatNo = memberViewModel.flatNo;
            client1.IsHa = memberViewModel.isHa;
            client1.AddType = memberViewModel.addtype;
            context.Addresses1.Add(client1);
            contact.Email = memberViewModel.email;
            contact.cell = memberViewModel.cell;
            contact.cell2 = memberViewModel.cell;
            contact.tel_h = memberViewModel.tel_h;
            contact.tel_w = memberViewModel.tel_w;
            contact.fax = memberViewModel.fax;
            contact.m_id = client.m_id;
           context.Contacts.Add(contact);
            context.SaveChanges();
        }

我的問題是我想在成員表上保存一個新成員,但是新成員必須從heads表中保存一個head ID,請您幫忙。 詳細信息”
H_id是heads表中的member表的外鍵。 頭已保存,現在我想在heads表中已經存在的head下的成員表上保存一個新成員。 但我要在成員表上保存該特定頭的H_id。”

根據我們的評論,在您的“ Post操作中,我建議對將要發布到數據庫的所有數據使用“ Bind ”。 您只需要提及字段名稱(例如,我只提到了3個字段)。

public ActionResult Create([Bind(Include = "fname,lname,cell")]MembersViewModel memberViewModel)
{
    Head head = context.Heads.FirstOrDefault(x => x.cell.Equals(memberViewModel.cell));
    // now we have a Head entity to reference
    var client = new Member
    {
        fname = memberViewModel.fname,
        lname = memberViewModel.lname,
        initial = memberViewModel.initial,
        title_id = memberViewModel.title_id,
        dob = memberViewModel.dob,
        maritial = memberViewModel.maritials,
        religion = memberViewModel.religion,
        occupation = memberViewModel.occupation,
        company = memberViewModel.company,
        Note = memberViewModel.note,
        employed = memberViewModel.employed,
        reg_date = memberViewModel.regdate,

        AccNumb = memberViewModel.accNumb,
        Hnumber = memberViewModel.hnumber,
        Active = memberViewModel.active,
        AgeGrp = memberViewModel.agegroup,
        h_id = head.h_id,                      // this is where we set Member.h_id
    };
    var client1 = new Addresses1();
    var contact = new Contact();
    using (var context = new ParishDBSQLEntities())
    {
        context.Members.Add(client);                
        client1.h_ID = head.h_id;               // using head entity as reference again
        client1.strNo = memberViewModel.strNo;
        client1.strname = memberViewModel.strname;
        client1.Suburb = memberViewModel.suburb;
        client1.City = memberViewModel.city;
        client1.Province = memberViewModel.province;
        client1.Country = memberViewModel.country;
        client1.PostalCode = memberViewModel.postalcode;
        client1.zone = memberViewModel.zone;
        client1.flatName = memberViewModel.flatName;
        client1.flatNo = memberViewModel.flatNo;
        client1.IsHa = memberViewModel.isHa;
        client1.AddType = memberViewModel.addtype;
        context.Addresses1.Add(client1);
        contact.Email = memberViewModel.email;
        contact.cell = memberViewModel.cell;
        contact.cell2 = memberViewModel.cell;
        contact.tel_h = memberViewModel.tel_h;
        contact.tel_w = memberViewModel.tel_w;
        contact.fax = memberViewModel.fax;
        contact.m_id = client.m_id;              // NB
       context.Contacts.Add(contact);
        context.SaveChanges();
    }

這里有一個主要問題。 client.m_id =0。這是因為我們沒有手動設置m_id的值。 即使m_id是數據庫生成的。 該ID僅會在context.SaveChanges上提供給實體。

要解決此問題,如果您的m_id字段是數據庫生成的,則可以復制context.SaveChanges(); m_id 就在client1.h_ID = head.h_id; 然后在設置contact的值之前,初始化Member的實例。

同樣,在這里,我認為您應該向Member添加一個cell字段,以便可以像這樣引用它:

Member temp = context.Member.FirstOrDefault(x => x.cell.Equals(memberViewModel.cell));

然后,您可以更改此行contact.m_id = client.m_id; 到這個contact.m_id = temp.m_id ;

希望這對您有幫助

您必須創建ViewModel,其中將包含兩個表中所需的日期。 在Cotroler中,您可以創建新的對象類型成員,然后通過LINQ或EF Head ID將其加載到模型中。

Member p1=new Member();
p1.Name=ViewModel.Name; etc..

之后,在secound表中您在secound表中添加p1.ID

    context.Add(p1)
    context.saveChanges();
    Head.Id=p1.ID;

暫無
暫無

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

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