Gle*_*ven 5 c# mysql entity-framework
我有最新的Mysql连接器,允许您使用Visual Studio Entity Framework设计器.它工作得很好,但我刚添加了一个存储过程.
服务器资源管理器使用指定的参数将其加载完好,但随后我将其添加到实体模型中,并且它生成的代码没有任何输入参数.
这是存储过程
CREATE PROCEDURE `GetViewableMenuNodes`(IN siteId INT, IN parentId INT, IN userName varchar(255))
BEGIN
select m.*
from menunode m
where m.siteid = siteId
and m.showinmenu = 1
and m.parentid = parentId
and m.viewername = userName;
END
Run Code Online (Sandbox Code Playgroud)
这是模型生成的代码
public global::System.Data.Objects.ObjectResult<MenuNode> GetViewableMenuNodes()
{
return base.ExecuteFunction<MenuNode>("GetViewableMenuNodes");
}
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您发现这有用,这里是我用于从MySQL Connector/.NET Entity Framework提供程序处理带有MySQL参数的存储过程的方法.我调用ExecuteStoreQuery().这使我不必处理模型中参数映射过程的挑战.这符合我们的需求.
public IList<SearchResultsMember> SearchMembers(int memberID, string countryCode, string regionCode, string cityCode, float distanceKm,
int genderID, int ageMin, int ageMax, int offsetRowIndex, int maxRows)
{
MySqlParameter[] queryParams = new MySqlParameter[] {
new MySqlParameter("memberIDParam", memberID),
new MySqlParameter("countryCodeParam", countryCode),
new MySqlParameter("regionCodeParam", regionCode),
new MySqlParameter("cityCodeParam", cityCode),
new MySqlParameter("distanceKmParam", distanceKm),
new MySqlParameter("genderIDParam", genderID),
new MySqlParameter("ageMinParam", ageMin),
new MySqlParameter("ageMaxParam", ageMax),
new MySqlParameter("offsetRowIndexParam", offsetRowIndex),
new MySqlParameter("maxRowsParam", maxRows)
};
StringBuilder sb = new StringBuilder();
sb.Append("CALL search_members(@memberIDParam, @countryCodeParam, @regionCodeParam, @cityCodeParam, @distanceKmParam, @genderIDParam, @ageMinParam, @ageMaxParam, @offsetRowIndexParam, @maxRowsParam)");
string commandText = sb.ToString();
var results = _context.ExecuteStoreQuery<SearchResultsMember>(commandText, queryParams);
return results.ToList();
}
Run Code Online (Sandbox Code Playgroud)
小智 3
查看此错误条目:
http://bugs.mysql.com/bug.php?id=44985
对不起你的运气。欢迎来到俱乐部。显然,MySQL 连接器/.NET 实体框架无法对 MySQL 中的存储过程提供适当的支持。从线程中的日期可以看出,引入该功能的响应速度非常慢。