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

时间:2015-07-02 00:31:21

标签: c# asp.net asp.net-mvc edmx

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

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

我希望这两个过程都能将数据作为名为Movie的ComplexType返回。

我正在实例化我的MyDbEntities并尝试根据条件使用这两个过程,就像下面的示例中一样,但是当变量isLookingByName为真时它会失败并显示以下消息:

类型成员'CreatedDate'在数据阅读器中没有相应名称的相应列。

示例:

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

return db.getAllMovies().ToList();

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

只是让我们在我的视图中知道我显示所有这三个信息Id,Name和CreatedDate。当CreatedDate为null时,它不显示,我很好。

有人知道我该怎么办?

非常感谢!

1 个答案:

答案 0 :(得分:0)

解决方法是使用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();
        }
    }
}