首页 > 解决方案 > 无法将类型 'TestLinq.UserData' 转换为 T'estLinq.userData'

问题描述

仍在研究 EF6 中的概念(学习) 这不是生产代码;只是为了学习...

我正在尝试从直接 SQL ODBC 调用迁移到 EF6,并尝试复制我目前在我的代码中使用的方法的功能。

考虑这段代码:

public class user
{
    [Key]
    public int pkID;
    public string ForeignID;
    public string UserName;
    public virtual List<userData> UserDatas { get; set; }
}

public class userData
{
    [Key]
    public int pkID;
    public int fkUserID;
    public string ColumnName;
    public string ColumnValue;
    public bool IsOverrode;
    public string OverrideValue;
}

class Program
{
    static TestDataEntities db = new TestDataEntities();

    static void Main(string[] args)
    {
        var record = db.Users.Select(x => new { x.UserName, x.pkID }).FirstOrDefault();
        Console.WriteLine(record);

        var record2 = db.Users.Include(x => x.UserDatas).FirstOrDefault();

        record2.UserName = "JohnTestNew";

        db.SaveChanges();

        var ud = record2.UserDatas.Where(x => x.ColumnName.ToUpper().Contains("FIRSTNAME")).FirstOrDefault();

        foreach (var item in record2.UserDatas)                
            Console.WriteLine(item.ColumnName);
        Console.ReadLine();
    }

    static userData TestReturn()
    {
        var record2 = db.Users.Include(x => x.UserDatas).FirstOrDefault();
        var ud = record2.UserDatas.Where(x => x.ColumnName.ToUpper().Contains("FIRSTNAME")).FirstOrDefault();
        return (userData)ud;
    }

最后一行出现编译错误:return (userData)ud; '无法将类型 'TestLinq.UserData' 转换为 'TestLinq.userData'

我有点理解发生了什么,但我想我可以在返回时选择课程。UserData 包含在返回的查询中,userData 是 UserData 的原始类。

有没有办法使用基类返回这个对象?

标签: entity-frameworkentity-framework-6

解决方案


推荐阅读