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时,它不会显示,我对此很满意。
有人知道我该怎么做?
非常感谢!
解决方法是使用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();
}
}
}