如何仅使用文本框将数据插入外键属性 [英] How do I insert data into foreign key attributes using textbox only

查看:82
本文介绍了如何仅使用文本框将数据插入外键属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个表,如下所示,MainMember上有一个外键。每个成员可能有一个受抚养人。我想只使用文本框将数据插入主成员表。没有下降,包括外键属性



我尝试过:



 public class MainMember 
{
public int Id {get; set;}
public string Name {get; set;}
public string PassportNumber {get; set;}


[ForeignKey(Dependent)]
public int DepId {get; set;}
public string DepName {get; set ;}
public string DepPassportNumber {get; set;}
public Dependent Dependent {get; set;}
}


public class Dependent
{
public int Id {get; set;}
public string Name {get; set;}
public string PassportNumber {get; set}
}

我正在使用tdd开发一个mvc应用程序,所以我有一个名为Insert的业务逻辑方法,它继承自我的存储库文件夹

public interface IMaimMemberRepository:IDsposable
{

void Insert(订单模型);

}

此后,我在MainMemberRepository类中实现了上述方法。

public void Insert(MainMemberViewModel model)
{

using(var db = new MainMemberRepository())
{
db.Insert (new MainMember
{
Name = model.Name,
PassportNumber = model.PassportNumber,
DepName = model.DepName,
DepPassportNumber = model.PassportNumber
};



在我的控制器中

public ActionResult Insert(MainMemberViewModel model)
{

var business = new MainMemberBusiness();

business.Insert(model);

返回查看():

}

解决方案

你的方式它设置你的成员只能有一个依赖。我建议改为以下设置。

 [Key] 
public int MemberId { get ; set ;}
public string 名称{获取; set ;}
public string PassportNumber { get ; set ;}
public ICollection< Dependent>受抚养人{获取; 设置;}



您的受抚养人应该是这样的

 [Key] 
public int DependentId { get ; set ;}
[ForiegnKey ( 成员)] {获取 ; set ;}
public int MemberId { get ; set ;} // 标记我所属的成员
public string 名称{ get ; set ;}
public string PassportNumber { get ; set ;}
public virtual 会员{获取; 设置;}



我总是使用像MemberId和DependentId这样的ID,以便它的目的很明确。不是要求,个人偏好。如果您正在查看所有使用过的地方的代码,那么搜索全名就很方便了。

因此每个Dependent都有MemberId,以便您(或实体)框架或其他一些ORM)可以将所有相关的家属与会员联系起来。

您的会员类将具有ICollection< dependent>作为其中一个属性。 Dependent将拥有一个Member属性。

要处理外键,您必须保存该成员并在保存后获取该成员ID,然后在尝试保存之前在每个Dependents中设置MemberId它。像Entity Framework这样的ORM可以为您执行此操作。

(还有另一个选项,在两个名为'Person'和Member& Dependent的单独表格中使用两者之间的共同点,每个选项都延伸出来。)



关于用文本框填充项目的问题,你没有显示任何视图代码,所以我不知道如何帮助那里。

Mike


I have two tables as seen below with a foreign key on MainMember. Each member may have a dependent. I want to insert data into the main member table using only text boxes. Not drop downs, including the foreign key attributes

What I have tried:

public class MainMember
{
public int Id { get;set;}
public string Name { get;set;}
public string PassportNumber { get;set;}


[ForeignKey("Dependent")]
public int DepId { get;set;}
public string DepName { get;set;}
public string DepPassportNumber { get;set;}
public Dependent Dependent {get;set;}
}


public class Dependant
{
public int Id { get;set;}
public string Name { get;set;}
public string PassportNumber {get;set}
}

I am developing an mvc application using tdd, so I have a business logic method named Insert which inherits from my repository folder

public interface IMaimMemberRepository : IDsposable
{

void Insert(Order model);

}

Thereafter I implement the above method in my MainMemberRepository class.

public void Insert(MainMemberViewModel model)
{

using(var db = new MainMemberRepository())
{
db.Insert(new MainMember
{
Name= model.Name,
PassportNumber = model.PassportNumber,
DepName= model.DepName,
DepPassportNumber = model.PassportNumber
};

)

In my controller

public ActionResult Insert(MainMemberViewModel model)
{

var business = new MainMemberBusiness();

business.Insert(model);

return View():

}

解决方案

The way you have it set up your members can only have one dependent. I would suggest the following setup instead.

[Key]
public int MemberId {get;set;}
public string Name {get;set;}
public string PassportNumber {get;set;}
public ICollection<Dependent> Dependents {get;set;}


Your dependent should be like this

[Key]
public int DependentId {get;set;}
[ForiegnKey("Member")]  {get;set;}
public int MemberId  {get;set;} // marks the member I belong to
public string Name {get;set;}
public string PassportNumber {get;set;}
public virtual Member Member {get;set;}


I always use ids like MemberId and DependentId so that its purpose is clear. Not a requirement, a personal preference. If you're looking through code for all the places where you used something, it's handy to have that full name to search.
So each Dependent has the "MemberId" in it so that you (or Entity Framework or some other ORM) can tie all the related Dependents to the Member.
Your Member class will have a ICollection<dependent> as one of its properties. The Dependent would have a Member property.
To deal with the foreign key you have to save the member and get the member id after it's saved, then set the MemberId in each of the Dependents before trying to save it. An ORM like Entity Framework with do this for you.
(there's another option that uses anything that's common between the two in a separate table called 'Person' and Member & Dependent each extend from that.)

As to your question about filling the items with text boxes, you're not showing any of the view code so I'm not sure how to help there.
Mike


这篇关于如何仅使用文本框将数据插入外键属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆