EDMX数据库将两个过程映射到同一ComplexType

本文关键字:映射 过程 ComplexType 两个 数据库 EDMX | 更新日期: 2023-09-27 18:00:48

我正在我的MVC项目中创建一个.edmx。我已经映射了两个从数据库返回电影信息的过程。

第一个过程是getMoviesByName,它只返回Id和Name。第二个过程是getAllMovies,返回Id、Name和CreatedDate。

我希望这两个过程都以名为Movie的ComplexType的形式返回数据。

我正在实例化MyDbEntities,并试图根据下面示例中的条件使用这两个过程,但当变量isLookingByName为true时,它失败了,并显示以下消息:

类型为"CreatedDate"的成员在数据读取器中没有具有相同名称的相应列

示例:

var db = new MyDbEntities();
if(isLookingByName) 
{ 
    return db.getMoviesByName(name).ToList();
}
return db.getAllMovies().ToList();

因此,只要条件为true,就会抛出异常。问题是我无法更改第一个添加CreatedDate的过程。

只是想让你们知道,在我的视图中,我显示了所有这三个信息Id,Name和CreatedDate。当CreatedDate为null时,它不会显示,我对此很满意。

有人知道我该怎么做?

非常感谢!

EDMX数据库将两个过程映射到同一ComplexType

解决方法是使用ADO.NET

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand(
    "SELECT Id, Name and CreatedDate  FROM movies WHERE id= @id", connection))
    {
        command.Parameters.Add(new SqlParameter("@id", id));
        SqlDataReader reader = command.ExecuteReader();
        if(reader.HasRows())
        {
            var id= reader["Id"].ToString();
            var name= reader["Name"].ToString();
        }
    }
}