MVC 3 사이트에서 Entity Framework를 사용하여 일대 다 관계를 처리하고 있습니다. 기본 테이블 (AgentTransmission
) 모델 개체는 List
의 보조 테이블 개체 (ClearninghouseParnters
)를 포함합니다. EF 덕분에 ClearinghousePartners
의 FK
필드가 채워지고 저장되도록 AgentTransmission
개체를 저장하는 것 이상을 수행 할 필요가 없습니다.조건부로 보조 테이블 개체 저장
그러나 사용자에게 제공되는 양식에는 Clearinghouse 정보를 입력하는 5 개의 입력란이 있습니다.
각 행은 새로운 ClearinghousePartners
목록 항목 개체를 나타냅니다. 불행히도 각 개체는 데이터가 포함되는지 여부에 관계없이 데이터베이스에 저장됩니다. 이는 실제로 페이지를 표시하는 방법과 성능면에서 차이가 없지만 꽤 복잡한 테이블을 만들 수 있습니다.
내 질문은 : 값 중 하나를 ClearinghouseName
, TradingPartnersName
, 또는 StartDate
열에 존재하는 경우에만 ClearinghousePartners
목록 개체의 항목을 저장하는 엔티티 프레임 워크를 지시 할 수있는 방법이 있습니까?
마찬가지로 기존 ClearinghousePartners
PK와 동일한 필드에 값/공백이없는 항목을 컨트롤러에 다시 게시하면 테이블에서 개체를 삭제하고 싶습니다.
차 표는 모델
참고 - 난 그냥 List
public partial class AgentTransmission
{
.
.
public virtual List<ClearinghousePartners> ClearinghousePartners { get; set; }
}
보조 테이블 모델
public partial class ClearinghousePartners
{
public int Id { get; set; }
public string ClearingHouseName { get; set; }
public string TradingPartnerName { get; set; }
public Nullable<System.DateTime> StartDate { get; set; }
public int AgtTransId { get; set; } //FK field corresponds to 'Id' on AgentTransmission
public virtual AgentTransmission AgentTransmission { get; set; }
}
을 보여주는거야, 그래서이 테이블은 필드의 큰 숫자를 포함 제어 LER는
agenttransmission.LastChangeDate = DateTime.Now;
agenttransmission.LastChangeOperator = Security.GetUserName(User);
db.AgentTransmission.Add(agenttransmission);
db.SaveChanges(); //Saves to both tables
보기
<fieldset id="ClearinghousePartners">
<legend>Clearinghouse Partners</legend>
<center>
<table>
<thead>
<th>Clearinghouse Name</th>
<th>Trading Partner Name</th>
<th>Start Date</th>
</thead>
<tbody>
@for (int i = 0; i < Model.ClearinghousePartners.Count(); i++)
{
<tr align="center">
@Html.HiddenFor(model => model.ClearinghousePartners[i].Id)
@Html.HiddenFor(model => model.ClearinghousePartners[i].AgtTransId)
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].ClearingHouseName, new { style = "width: 100px" })</td>
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].TradingPartnerName, new { style = "width: 100px" })</td>
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].StartDate, new { style = "width: 100px" })</td>
</tr>
}
</tbody>
</table>
</center>
</fieldset>
좋은 아이디어, 감사합니다. 그러나 VS가'.Where()'다음에'.Remove()'를 인식하지 못하기 때문에'.RemoveAll()'을 사용하여 그 메소드에 술어를 넣어야했습니다. 고마워 – NealR