使用实体框架创建查询
本文关键字:创建 查询 框架 实体 | 更新日期: 2023-09-27 18:10:58
尝试转换为EF 5,但CreateQuery
有问题。任何帮助都将非常感激。提前谢谢你。
这是代码:
using System;
using System.ServiceModel;
using System.Data.Objects;
namespace TestingOneServiceRole
{
public class Service1 : IService1
{
public void AddUser(string fullName, string userName, string password)
{
using (var context = new MyEntities())
{
context.AddToUser(new User()
{
UserName = userName,
Password = password,
FullName = fullName,
});
context.SaveChanges();
}
}
public string UserLoginNow(string username, string password)
{
string query = @"SELECT value blah.FullName FROM MyEntities.blah AS User WHERE blah.UserName = @username AND blah.Password = @password";
ObjectParameter[] parameters = new ObjectParameter[2];
parameters[0] = new ObjectParameter("username", username);
parameters[1] = new ObjectParameter("password", password);
using (var context = MyEntities())
{
ObjectQuery<string> results = context.CreateQuery<string>(query, parameters);
foreach (string result in results)
{
etc.......
我认为在这个响应中,您的MyEntities继承自EF5中的DbContext。
在DbContext中使用SqlQuery(of T)方法属性来完成相同的事情:
public string UserLoginNow(string username, string password)
{
string query = @"SELECT value blah.FullName FROM MyEntities.blah AS User WHERE blah.UserName = @username AND blah.Password = @password";
object[] parameters = new object[2];
parameters[0] = username;
parameters[1] = password;
using (var context = MyEntities())
{
IEnumerable<string> results = context.Database.SqlQuery<string>(query, parameters);
foreach (string result in results)
{
}
}
}
如果您的实体框架模型派生自ObjectContext(而不是DbContext),那么请参阅@MarkSowul提供的关于如何访问EF 5中的CreateQuery方法的链接。
有两个步骤:
第一,将引用添加到类中:
using System.Data.Entity.Infrastructure;
第二,将你的代码重写为
var result= ((IObjectContextAdapter)context).ObjectContext.CreateQuery<blah_name>(query);