Bre*_*ogt 10 sql-server entity-framework entity-framework-4
我正在使用Entity Framework 4 Code First CTP5和ASP.NET MVC 3.我想知道如何使用存储过程?
我的respository类中有以下代码:
MyDatabaseContext db = new MyDatabaseContext();
public void Insert(News news)
{
db.Newses.Add(news);
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
然后我的插入存储过程将如下所示:
ALTER PROCEDURE [dbo].[News_Insert]
(
@Title VARCHAR(100),
@Body VARCHAR(MAX),
@NewsStatusId INT
)
AS
BEGIN
INSERT INTO
News
(
Title,
Body,
NewsStatusId
)
VALUES
(
@Title,
@Body,
@NewsStatusId
);
SELECT SCOPE_IDENTITY();
END
Run Code Online (Sandbox Code Playgroud)
任何文章/建议将不胜感激.
更新1:
有了设计师,我可以返回新对象或新闻ID,我该怎么做?
更新2
这就是我做的:
public void Insert(News news)
{
int newsId = context.Database.SqlQuery<int>("News_Insert @Title, @Body, @Active",
new SqlParameter("Title", news.Title),
new SqlParameter("Body", news.Body),
new SqlParameter("Active", news.Active)
).FirstOrDefault();
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我在这里得到一个错误说:
从物化的"System.Decimal"类型到"System.Int32"类型的指定强制转换无效.
我的新闻课:
public class News
{
public int NewsId { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public bool Active { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我使用的是现有数据库,我的连接字符串如下所示:
<connectionStrings>
<add
name="MyDatabaseContext"
connectionString="Data Source=MyServer;Initial Catalog=MyDatabase;Integrated Security=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
这是我的上下文类:
public class MyDatabaseContext : DbContext
{
public DbSet<News> Newses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我不确定我在这里做错了什么?我的存储过程可能不正确吗?理想情况下,我想返回新的更新对象.有人可以建议吗?
存储过程没有直接映射支持(如EDMX所知).您可以Add使用db.Database.SqlCommand方法简单地调用您的过程而不是方法.试试这个:
db.Database.SqlCommand("dbo.News_Insert @Title, @Body, @NewsStatusId",
new SqlParameter("Title", news.Title),
new SqlParameter("Body", news.Body),
new SqlParameter("NewsStatusId", news.NewStatus.Id));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18818 次 |
| 最近记录: |