Lambda表达式 - 错误无法将类型`vicoapi.Pictures'隐式转换为`System.Collections.Generic.List <vicoapi.pictures>'(CS0029)

时间:2017-01-27 13:36:45

标签: mysql asp.net-mvc generics lambda asp.net-core

Hello一起关注我的代码:

    public class SampleData : DropCreateDatabaseIfModelChanges<VicoTvEntities>
{
    protected override void Seed(VicoTvEntities context)
    {
        var pictures = new List<Pictures>{
            new Pictures { Name = "Testbild", Url="localhost/test" }
        };
        var user = new List<User>{
            new User{Username="Muster", Password="Pass",Email="max.muster@mustermail.com",Bio="Musterbiografie", Pictures = pictures.Find(pic => pic.Name == "Testbild")}
        };
    }
}

}

我尝试构建API,目前,我正在处理数据库与代码的连接。我正在学习本教程:https://www.asp.net/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-4

我的问题是,每当我尝试添加图片时,由于此转换错误,它将无效。如何避免此问题并将图片实现给用户。 我的源代码树看起来像这样: Source Tree

用户类如下所示:

public class User
{
    public int IdUser { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
    public string Bio { get; set; }
    public List<Pictures> Pictures { get; set; }
    public List<Follow> Following { get; set; }
    public List<Follow> Followed { get; set; }
}

我得到的错误如下:

  

/Users/username/vicotv-Backend/vicoapi/vicoapi/Models/SampleData.cs(126,126):错误CS0029:无法将类型`vicoapi.Pictures'隐式转换为System.Collections.Generic.List'(CS0029)( vicoapi)

1 个答案:

答案 0 :(得分:1)

虽然你没有在这里展示这个类,但我相当确定你的User类有一个像这样定义的属性:

public List<Pictures> Pictures { get; set; }

如果是这种情况,您需要将属性分配给整个列表,如下所示:

user.Pictures = pictures

如果您希望用户只能拥有一张图片,那么您需要在User类上定义Picture属性,如下所示:

public Pictures Picture { get; set; }

如果您像这样定义Picture属性,它应该与您当前的代码一起使用。

P.S。我肯定会建议将“图片”类重命名为“图片”。通常,您应该使用单数形式的类名。有关详细信息,请查看at this page