作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 Entity Framework 中使用具有用户定义表类型的过程?
我有使用数据库优先方法的 EF,当我添加具有用户定义的表类型列的过程时,它不会反射(reflect)在 EF 中将更新模型。
以及如何使用过程在 EF 中传递用户定义的表参数?
我的程序:
Sample_Proce_Sp
(
@TableTest @UserDefinedTable 只读
)
作为
开始
从@TableTest 中选择 *
结尾
在 EF 中,我更新了模型,将添加显示错误的存储过程,例如
The model was generated with warnings or errors.
Please see the Error List for more details. These issues must be fixed before running your application.
Loading metadata from the database took 00:00:03.1330217.
Generating the model took 00:00:01.9251464.
Successfully registered the assembly 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' in the Web.Config file.
最佳答案
EntityFrameworkExtras on Github看起来很有希望。
从 Git 中心站点:
DbContext context = new DbContext("ConnectionString");
var proc = new AddMemberStoredWithAddressesProcedure()
{
FirstName = "Michael",
LastName = "Bovis",
Age = 26,
Addresses = new List<Address>()
{
new Address() {Line1 = "16", Line2 = "The Lane", Postcode = "MA24WE"}
}
};
context.Database.ExecuteStoredProcedure(proc);
CREATE TYPE [dbo].[UdtGuidList] AS TABLE(
[Guid] [uniqueidentifier] NULL
)
GO
CREATE PROCEDURE [dbo].[MyUdtSproc]
-- Add the parameters for the stored procedure here
(@GuidList UdtGuidList READONLY)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT *
from Blog b
INNER JOIN @GuidList gl ON gl.Guid = b.BlogGuid
--where b.BlogGuid in (SELECT gl.Guid from @GuidList gl)
END
declare @p3 dbo.UdtGuidList
insert into @p3 values(N'333f3916-c823-e311-84f2-0022198ef787')
insert into @p3 values(N'33327a17-c34e-e211-9a8c-0022198ef787')
insert into @p3 values(N'333ebc24-c44e-e211-9a8c-0022198ef787')
insert into @p3 values(N'3338d557-c44e-e211-9a8c-0022198ef787')
insert into @p3 values(N'333d7f92-c44e-e211-9a8c-0022198ef787')
exec sp_executesql N'EXEC [dbo].[MyUdtSproc] @GuidList = @GuidList ',N'@GuidList [UdtGuidList] READONLY',@GuidList=@p3
var dt = new DataTable();
dt.Columns.Add("Guid");
foreach (var r in list)
{
var row = dt.NewRow();
row["Guid"] = r.Guid;
dt.Rows.Add(row);
}
using (var conn = new SqlConnection(@"Server=AComputer\DEVSQL;Database=Booyaa;Trusted_Connection=True"))
{
using (var sproc = new SqlCommand("[dbo].[MyUdtSproc]", conn))
{
var param = new SqlParameter("@GuidList", SqlDbType.Structured);
param.TypeName = "[dbo].[UdtGuidList]";
param.SqlValue = dt;
sproc.Parameters.Add(param);
if (conn.State != ConnectionState.Open) conn.Open();
var reader = sproc.ExecuteReader();
}
}
关于entity-framework-6 - 如何在 Entity Framework 中使用具有用户定义表类型的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20971331/
我是一名优秀的程序员,十分优秀!