我们已经开始使用Entity Framework 4进行数据访问,并遇到了一个问题或者可能缺乏理解。
我们当前的系统严重依赖存储过程,这些过程包含一些必要的业务逻辑,因此我们需要在执行选择/插入/更新/删除时继续使用这些逻辑。
我们遇到的问题如下:
我们已将表格映射到实体,例如,这是一个用户实体,并具有以下属性 - UserId,FirstName,LastName
现在在我们的sproc中插入用户,我们接受FirstName,LastName,CreatedById作为参数。
由于我们的用户实体没有CreatedById,我们得到一个错误,表明我们的实体的任何属性都不能映射到“CreatedById”参数。
我们尝试过的一件事是手动将CreatedById标量属性添加到我们的实体,但是这会导致数据源中的User表中没有Field映射到CreatedById的问题。一般而言,我们要传递的附加属性不是存储的内容。
现在有一个潜在的解决方案,因为我们可以将这些过程映射到函数导入,而不是使用.AddObject,.DeleteObject,.SaveChanges操纵我们的对象的方式而烦恼,但这不是去吧。
答案 0 :(得分:0)
这是一个很好的问题。我可以告诉你很少的选择。 而不是将实体映射到表,将其映射到视图并让视图返回CreatedById,然后您的问题就会得到解决。
第二个选项是创建重载的存储过程,该过程仅接受FirstName,LastName并使用CreatedById的默认值调用实际存储过程。您可以在数据库层创建重载,也可以在支持内联存储过程的ssdl层中的模型中创建重载。
exec myproc @ firstName,@ LastName,null