sql-server – 使用实体框架的存储过程4代码第一个CTP5
发布时间:2020-05-25 03:48:07 所属栏目:MsSql 来源:互联网
导读:我正在使用Entity Framework 4 Code First CTP5和ASP.NET MVC 3.我想知道如何使用存储过程? 我的呼吁类中有以下代码: MyDatabaseContext db = new MyDatabaseContext();public void Insert(News news){ db.Newses.Add(news); db.SaveChan
|
我正在使用Entity Framework 4 Code First CTP5和ASP.NET MVC 3.我想知道如何使用存储过程? 我的呼吁类中有以下代码: MyDatabaseContext db = new MyDatabaseContext();
public void Insert(News news)
{
db.Newses.Add(news);
db.SaveChanges();
}
然后我的插入存储过程将如下所示: 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
任何文章/建议将不胜感激. 更新1: 与设计师可以返回新对象或新闻ID,我该怎么做? 更新2 这就是我所做的: public void Insert(News news)
{
int newsId = context.Database.SqlQuery<int>("News_Insert @Title,@Active",new SqlParameter("Title",news.Title),new SqlParameter("Body",news.Body),new SqlParameter("Active",news.Active)
).FirstOrDefault();
context.SaveChanges();
}
我在这里得到一个错误说: 从物化的“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; }
}
我正在使用现有的数据库,我的连接字符串如下所示: <connectionStrings>
<add
name="MyDatabaseContext"
connectionString="Data Source=MyServer;Initial Catalog=MyDatabase;Integrated Security=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
这是我的上下文类: public class MyDatabaseContext : DbContext
{
public DbSet<News> Newses { get; set; }
}
我不知道我在这里做错什么?我的存储过程可能不正确吗?理想情况下,我想返回新的更新对象.有人可以请指教吗? 解决方法没有对存储过程的直接映射支持(从EDMX已知).您可以使用db.Database.SqlCommand方法简单地调用您的过程而不是添加方法.尝试这个:db.Database.SqlCommand("dbo.News_Insert @Title,@NewsStatusId",new SqlParameter("NewsStatusId",news.NewStatus.Id)); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
