我有以下代码:
public void DeleteAccountsForMonth(int year, int month)
{
var result = from acm in this._database.AccountsOnMonth
where ((acm.Year == year) && (acm.Month == month))
select acm.Id;
var query = (ObjectQuery<int>)result;
string sql = string.Format(
"DELETE FROM [AccountsOnMonth] WHERE [AccountsOnMonth].[Id] IN ({0})",
query.ToTraceString()
);
var parameters = new List<System.Data.SqlClient.SqlParameter>();
foreach (ObjectParameter parameter in query.Parameters)
{
parameters.Add(new System.Data.SqlClient.SqlParameter {
ParameterName = parameter.Name,
Value = parameter.Value
});
}
this._database.Database.ExecuteSqlCommand(sql, parameters.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
基本上,我要做的是从上下文中删除大量数据(获取查询结果,获取SQL并执行它).但是,当铸造我有一个问题result
来ObjectQuery
.给出的例外是
无法转换类型为'System.Data.Entity.Infrastructure.DbQuery
1[System.Int32]' to type 'System.Data.Objects.ObjectQuery
1 [System.Int32]'的对象.
任何人都可以提供任何解决方案吗?谢谢! …
首先,对于大帖子(我先尝试做一些研究)和同一问题的混合技术(ASP.NET MVC 3,Ninject和MvcContrib),我感到很遗憾.
我正在使用ASP.NET MVC 3开发一个项目来处理一些客户端订单.
简而言之:我有一些继承自和抽象类的对象,Order
当我向控制器发出POST请求时,我需要解析它们.我该如何解决正确的类型?我是否需要覆盖DefaultModelBinder
该类,或者还有其他方法可以执行此操作?有人可以提供一些代码或其他链接,如何做到这一点?任何帮助都会很棒!如果帖子令人困惑,我可以做任何改变以表明清楚!
所以,对于我需要处理的订单,我有以下继承树:
public abstract partial class Order {
public Int32 OrderTypeId {get; set; }
/* rest of the implementation ommited */
}
public class OrderBottling : Order { /* implementation ommited */ }
public class OrderFinishing : Order { /* implementation ommited */ }
Run Code Online (Sandbox Code Playgroud)
这些类都是由Entity Framework生成的,所以我不会修改它们,因为我需要更新模型(我知道我可以扩展它们).此外,会有更多的订单,但都来自Order
.
我有一个通用的view(Create.aspx
)来创建一个订单,这个视图为每个继承的订单调用一个强类型的局部视图(在这种情况下OrderBottling
和OrderFinishing
).我Create()
为OrderController
类上的POST请求定义了一个GET请求的方法和其他方法.第二个是如下:
public class OrderController : Controller
{
/* rest of the …
Run Code Online (Sandbox Code Playgroud) 我正在尝试迁移仅在运行时已知的数据库,这意味着我无法使用程序包管理器控制台来更新数据库.它也不只是一个,而是许多数据库,但它们都是相同的架构:)
我正在使用Ninject生成并在DbContext
对象上注入连接字符串.上下文构造函数看起来像这样:
public class MyEntities : DbContext
{
public MyEntities(string database) : base(database) { }
/* Properties code omitted. */
}
Run Code Online (Sandbox Code Playgroud)
实例化上下文的方法如下:
public MyEntities GetDatabase(string databaseName, string connectionString)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
builder.InitialCatalog = databaseName;
MyEntities context = this._kernel.Get<MyEntities>(new ConstructorArgument(
"database", builder.ConnectionString));
Database.SetInitializer<MyEntities>(
new MigrateDatabaseToLatestVersion<MyEntities, MyEntitiesMigrationConfiguration>("MyEntities"));
return context;
}
Run Code Online (Sandbox Code Playgroud)
检索上下文时,该方法创建一个连接字符串,并将其作为参数传递给构造函数MyEntities
.我还在方法中指定了我想要的迁移类型(在本例中MigrateDatabaseToLatestVersion
).
迁移代码如下:
public partial class MyAccountInMonth : DbMigration
{
public override void Up()
{
AlterColumn("AccountsInMonths", "MovementDebtMonth", c => c.Long(nullable: false));
AlterColumn("AccountsInMonths", "MovementCreditMonth", c …
Run Code Online (Sandbox Code Playgroud) 我在将.NET生成的JSON数组映射JavaScriptSerializer
到knockout.js时遇到问题.像这样生成数组(为方便起见缩短):
OrderProposalFacade[] proposals = new OrderProposalFacade[order.OrderProposals.Count];
foreach (OrderProposal proposal in order.OrderProposals)
{
proposals[i++] = new OrderProposalFacade(proposal);
}
ViewBag.OrderProposals = new JavaScriptSerializer().Serialize(proposals);
Run Code Online (Sandbox Code Playgroud)
生成的JSON字符串是这样的:
[{ "ProposalId":1,"ProgrammedWeek":null,
"ProposalValue":120,"ProposalValueCorrected":130,
"ProposalDateSent":"01-12-2011","ProposalDateCorrected":"01-12-2011",
"ServiceId":1,"ServiceDescriptiveId":"OS001","ProposalState":2
},
{//another similar object}
]
Run Code Online (Sandbox Code Playgroud)
在ASP.NET MVC视图中,我这样做是为了绑定数组:
var initialData = ko.mapping.fromJSON(<%: new HtmlString(ViewBag.OrderProposals as string) %>);
var viewModel = {
proposals: ko.observableArray(initialData),
//some methods; removed to ease reading
};
ko.applyBindings(viewModel);
Run Code Online (Sandbox Code Playgroud)
问题:在proposals
阵列应该由knockout.js模板被渲染,但没有呈现.使用Firebug我在initialData
阵列上看不到任何对象,因此我假设在初始化时出现错误,因此,proposals
.绑定到模板是这样的:
<div id="service-orders" data-bind='template: { name: "proposal-template", foreach: proposals }' style="margin:0 -.7em 0 -0.5em;"></div> …
Run Code Online (Sandbox Code Playgroud)