"FromSql"操作的结果中不存在所需的列

Sco*_*lor 9 entity-framework-core asp.net-core-mvc

我刚开始用EF7学习MVC6.我有一个存储过程,我想返回我模型中的一部分字段.如果我没有返回模型中的每个字段,我会得到"'FromSql'操作的结果中不存在所需的列'FirstName'".

有没有办法让一些列不需要,所以我只能返回我的模型中的一部分字段?

模型:

public class LoginViewModel
{
    [Key]
    public int UserID { get; set; }

    [Required]
    [Display(Name = "Username")]
    public string Username { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Protected ID")]
    public string ProtectedID { get; set; }

    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的测试程序:

CREATE PROCEDURE [dbo].[aaa_TopXXUsersTest]
@NumToReturn int = 10
AS
BEGIN
    SET NOCOUNT ON;
    select top(@NumToReturn) UserID, LastName, Username,Password, ProtectedID from Users where Deleted = 0

END
Run Code Online (Sandbox Code Playgroud)

最后,我的控制器代码:

public IActionResult Index()
{
    var user = _context.Set<LoginViewModel>().FromSql("dbo.aaa_TopXXUsersTest @NumToReturn = {0}", 20);

    return View(user);
}
Run Code Online (Sandbox Code Playgroud)

如果我在我的存储过程中包含我的模型的所有字段,那么调用工作正常,但我似乎无法返回一个子集.有没有办法让一些字段不需要?

小智 5

使用的[NotMapped]属性具有名字。

NotMapped属性可以应用于我们不想在数据库中创建对应列的实体类的属性。

public class LoginViewModel
    {
        [Key]
        public int UserID { get; set; }

        [Required]
        [Display(Name = "Username")]
        public string Username { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Protected ID")]
        public string ProtectedID { get; set; }

        [NotMapped]
        public string FirstName { get; set; }

        public string LastName { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)