0
이 나는 역할, 권한이엔티티 프레임 워크 찾기 법인을 통해 외래 키
.. 이것은 대부분의 빵 & 버터입니다 있으리라 믿고있어, 그리고 RolePermissions 엔티티는 다 대다 관계를 모델링 할 수 있습니다.
public class RolePermission
{
[Key]
public int ID { get; set; }
//[Key, ForeignKey("Role"), Column(Order = 0)]
public int RoleID { get; set; }
//[Key, ForeignKey("Permission"), Column(Order = 1)]
public int PermissionID { get; set; }
//Navigational Properties
public virtual Role role { get; set; }
public virtual Permission permission { get; set; }
}
내가 전달하는 역할 ID 및 PermissionId에 따라 주어진 RolePermission을 제거하는 ActionResult를 가지고있다.
는public ActionResult Remove(int Roleid, int Permissionid)
{
RolePermission rolepermission = db.RolePermissions
.Include(p => p.PermissionID == Permissionid)
.SingleOrDefault(p => p.RoleID == Roleid);
db.RolePermissions.Remove(rolepermission);
db.SaveChanges();
return RedirectToAction("Index");
}
위 RolePermission의 rolepermission .. 문은
The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.
Parameter name: path
실패
.. 놀랍지도 않은데, 처음에는 코드 냄새가났다.
무엇 난 후 것은
Delete from RolePermission
Where RoleID = roleid
AND PermissionID = permissionid
모든지도에 해당 무엇입니까? 많은 감사는 RolePermission
방금 조인 테이블의 레코드에 대한 조회 및 삭제 할 수 있어야한다 (many-to-many 관계에 대해 조금 이례적인 일이다) 엔티티로 노출했기 때문에
그게 정확히 내가 한 것입니다. 감사합니다. re : "다 대다 관계에서는 약간 특이합니다." 나는 새로운 프론트 엔드 (코드를 통해) 프로토 타입을 생성하여 궁극적으로 이러한 엔티티가있는 기존 백엔드/데이터 레이어와 다시 연결됩니다. 왜 이것이 올바르지 않은가? 나는 아마도 내 생각을 설명하는 DB 배경에서 왔는데 ... –
@Fetchezlavache : 링크 테이블에 RoleID와 PermissionID로 구성된 복합 기본 키가 있고 그 둘 이외의 추가 열이없는 경우에는 'Permissions'을 직접적으로 수집하는'Role'과'Roles' 엔티티 만 직접적으로 수집하는'Permission'이 있습니다. 모델에'RolePermission'이 필요하지 않습니다. 여기를 참조하십시오 : http://weblogs.asp.net/manavi/archive/2011/05/17/associations-in-ef-4-1-code-first-part-6-many-valued-associations.aspx, 섹션 * 다 대다 협회 *,'Item'과'Category'의 예. – Slauma