我有VS 2012 Update 4,我已经安装了EF6 Tools for VS2012。
方法:数据库优先。
尝试生成存储过程时,生成的代码引用了错误的命名空间... 好的,现在我可以更新.tt文件中的命名空间,但是生成的方法需要一个ObjectResult数组,而不是ObjectResult的对象。
这是错误的:
public virtual ObjectResult<CustOrdersDetail_Result> CustOrdersDetail(Nullable<int> orderID)
{
var orderIDParameter = orderID.HasValue ?
new ObjectParameter("OrderID", orderID) :
new ObjectParameter("OrderID", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<CustOrdersDetail_Result>("CustOrdersDetail", orderIDParameter);
}
并且此代码有效:
public virtual ObjectResult<CustOrdersDetail_Result> CustOrdersDetail(Nullable<int> orderID)
{
var orderIDParameter = orderID.HasValue ?
new ObjectParameter[]{ new ObjectParameter("OrderID", orderID)} :
new ObjectParameter[]{ new ObjectParameter("OrderID", typeof(int))};
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<CustOrdersDetail_Result>("CustOrdersDetail", orderIDParameter);
}
现在我可以手动修复Array事件了,但是在edmx代码生成之后它会消失,当然......
我还看了Ladislav's answer,但没有成功:
有没有解决方法?
答案 0 :(得分:1)
要重新添加代码生成项,请从模型中删除所有生成的文件,然后右键单击模型并选择添加新生成项。你永远不应该修改tt文件我认为有一种方法可以实现海关生成器,否则在生成项目的新更新中很难将更改带到新版本,因为TT文件中的所有更改都会丢失。