小编KDr*_*ske的帖子

带有ReturnValue参数的EF ExecuteStoredCommand

我正在创建一个需要与遗留代码接口的新应用程序:(.

我试图调用的存储过程使用RETURN作为结果.我尝试执行和使用返回值会导致异常:

InvalidOperationException:执行命令时,参数必须是数据库参数或值.

不希望更改存储过程以另一种方式返回值,因为它要么需要更新遗留应用程序,要么维护几乎重复的存储过程.

遗留存储过程简介:

DECLARE @MyID INT
INSERT INTO MyTable ...
SELECT @MyID = IDENTITY()
RETURN @MyID
Run Code Online (Sandbox Code Playgroud)

我的实体框架/ DbContext工作,产生上述InvalidOperationException.

 SqlParameter parm = new SqlParameter() {
    ParameterName = "@MyID",
    Direction = System.Data.ParameterDirection.ReturnValue
 };

 DbContext.Database.ExecuteSqlCommand("EXEC dbo.MyProc", parm);
Run Code Online (Sandbox Code Playgroud)

寻找任何和所有不需要修改存储过程的解决方案.

sql-server ef-code-first entity-framework-4.1

19
推荐指数
2
解决办法
3万
查看次数

EF 4.1 Code First:类型中的每个属性名称在查找表关联上必须是唯一的错误

这是我第一次尝试创建自己的EF模型,我发现自己试图使用Code First创建查找表关联,因此我可以访问:

myProduct.Category.AltCategoryID
Run Code Online (Sandbox Code Playgroud)

我已经设置模型和映射,因为我理解是正确的,但继续得到 错误0019:类型中的每个属性名称必须是唯一的.已定义属性名称"CategoryID"

以下模型在我的代码中表示:

[Table("Product", Schema="mySchema")]
public class Product {
    [Key, DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]
    public int ProductID { get; set; }
    public int CategoryID { get; set; }
    public virtual Category Category { get; set; }
}

[Table("Category", Schema="mySchema")]
public class Category {
    [Key, DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]
    public int CategoryID { get; set; }
    public string Name { get; set; }
    public int AltCategoryID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我已经指定了以下关联:

modelBuilder.Entity<Product>()
                    .HasOptional(p => p.Category)
                    .WithRequired()
                    .Map(m => m.MapKey("CategoryID"));
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些其他的东西,包括添加[ForeignKey]注释,但这会导致包含对ProductID字段的引用的错误.

c# entity-relationship entity-framework entity-framework-4

5
推荐指数
1
解决办法
7461
查看次数