在实体框架中使用相同的表使用两个模型类 - mvc4

时间:2014-09-16 10:10:07

标签: c# asp.net-mvc entity-framework asp.net-mvc-4

我们正在尝试使用相同的表,tblLogin具有以下字段: 用户名,用户类型,USEREMAIL,密码。

我有两种形式。一个用于登录,其中只需要2个字段,即。用户名和密码。 另一种形式具有CRUD功能的所有4个字段。

我创建了一个带有DataAnnotation的模型类 - [2]的[Required],并根据需要为所有四列创建了另一个带[Required]的类。

它给了我错误:

An exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll but was not handled in user code
Additional information: The entity types 'AdminUser' and 'Login' cannot share table 'tblLogin' because they are not in the same type hierarchy or do not have a valid one to one foreign key relationship with matching primary 

2个模型类的代码如下:

Login.cs

[Table("tblLogin")]
public class Login
{
    [Key]
    public int adminId { get; set; }
    public string adminName { get; set; }
    [Required(ErrorMessage="Please provide your Email ID",AllowEmptyStrings=false)]
    [DataType(System.ComponentModel.DataAnnotations.DataType.EmailAddress)]
    public string adminEmail { get; set; }
    [Required(ErrorMessage="Please provide your password",AllowEmptyStrings=false)]
    [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
    public string adminPassword { get; set; }
    public string adminType { get; set; }
}

AdminUser.cs

[Table("tblLogin")]
public class AdminUser
{
    [Key]
    public int adminId { get; set; }
    [Required]
    public string adminName { get; set; }
    [Required(ErrorMessage = "Please provide your Email ID", AllowEmptyStrings = false)]
    [DataType(System.ComponentModel.DataAnnotations.DataType.EmailAddress)]
    public string adminEmail { get; set; }
    [Required(ErrorMessage = "Please provide your password", AllowEmptyStrings = false)]
    [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
    public string adminPassword { get; set; }
    [Required]
    public string adminType { get; set; }
}

我是mvc4的新手。

2 个答案:

答案 0 :(得分:0)

我们确实找到了答案,只使用了一个类似于login.cs的模型类,并且在插入和编辑功能下的控制器中,我们编写了下面的代码并成功实现了服务器端验证。

if (string.IsNullOrEmpty(u.adminName))
                ModelState.AddModelError("adminName", "Name field is Required");
if (string.IsNullOrEmpty(u.adminType))
                ModelState.AddModelError("adminType", "Please select the type of User");

感谢您的建议

答案 1 :(得分:-1)

异常附加信息说:实体类型'AdminUser'和'Login'不能共享表'tblLogin' 对于每个DB表,您只能创建一个类。