我有一个控制器动作,可以在本地和生产中使用Firefox,在本地使用IE,但在生产中不是IE.这是我的控制器动作:
public ActionResult MNPurchase()
{
CalculationViewModel calculationViewModel = (CalculationViewModel)TempData["calculationViewModel"];
decimal OP = landTitleUnitOfWork.Sales.Find()
.Where(x => x.Min >= calculationViewModel.SalesPrice)
.FirstOrDefault()
.OP;
decimal MP = landTitleUnitOfWork.Sales.Find()
.Where(x => x.Min >= calculationViewModel.MortgageAmount)
.FirstOrDefault()
.MP;
calculationViewModel.LoanAmount = (OP + 100) - MP;
calculationViewModel.LendersTitleInsurance = (calculationViewModel.LoanAmount + 850);
return View(calculationViewModel);
}
Run Code Online (Sandbox Code Playgroud)
这是我在IE中获得的堆栈跟踪:
错误.处理您的请求时发生错误.System.Reflection.TargetException:非静态方法需要一个目标.System.Reflection.RuntimeMethodInfo.Invoke的System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化)中的System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)处于System.Reflection.RuntimeMethodInfo.Invoke(Object obj, System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue(MemberExpression me,Object instance,System.Reflection.RuntimePropertyInfo.GetValue(Object obj,Object [] index)中的BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化) System.Data.Objects.ELinq.ELinqQueryState上的System.Data.Objects.ELinq.QueryParameterExpression.EvaluateParameter(Object [] arguments)中的System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression expression,ConstantExpression&constantExpression)中的Object&memberValue) .GetExecutionPlan(Nullable
1 forMergeOption) at System.Data.Objects.ObjectQuery1.GetResults(Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery1.System.Collections.Generic.IEnumerable.GetEnumerator()在System.Linq.Enumerable.FirstOrDefault [T 来自 …
c# asp.net-mvc entity-framework asp.net-mvc-3 entity-framework-5
我正在使用Entity Framework 5.0 Code First;
public class Entity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string EntityId { get; set;}
public int FirstColumn { get; set;}
public int SecondColumn { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我想在两者之间进行组合,FirstColumn并且SecondColumn作为独特的组合.
例:
Id FirstColumn SecondColumn
1 1 1 = OK
2 2 1 = OK
3 3 3 = OK
5 3 1 = THIS OK
4 3 3 = GRRRRR! HERE ERROR
Run Code Online (Sandbox Code Playgroud)
反正有吗?
entity-framework constraints unique-key multiple-columns ef-code-first
我有一个使用Entity Framework的项目.在调用SaveChangesmy时DbContext,我得到以下异常:
System.Data.Entity.Validation.DbEntityValidationException:一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性.
这一切都很好,但每次发生此异常时我都不想附加调试器.此外,在生产环境中,我无法轻松附加调试器,因此我不得不竭尽全力重现这些错误.
我怎样才能看到隐藏在其中的细节DbEntityValidationException?
我正在尝试这种代码优先的方法,但我现在发现System.Decimal类型的属性被映射到decimal(18,0)类型的sql列.
如何设置数据库列的精度?
我正在使用一个.mdf连接到database和entityClient.现在我想更改连接字符串,以便没有.mdf文件.
以下connectionString是否正确?
<connectionStrings>
<!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />-->
<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
因为我总是得到错误:
底层提供程序在Open上失败
我有一个关于.AsNoTracking()扩展的问题,因为这一切都很新而且很混乱.
我正在使用网站的每请求上下文.
我的很多实体都没有改变,所以不需要跟踪,但我有以下场景,我不确定数据库会发生什么,甚至在这种情况下它是否有所不同.
这个例子就是我目前正在做的事情:
context.Set<User>().AsNoTracking()
// Step 1) Get user
context.Set<User>()
// Step 2) Update user
Run Code Online (Sandbox Code Playgroud)
这与上面相同,但从.AsNoTracking()步骤1中删除:
context.Set<User>();
// Step 1) Get user
context.Set<User>()
// Step 2) Update user
Run Code Online (Sandbox Code Playgroud)
步骤1和2使用相同的上下文,但在不同的时间发生.我无法解决的是,是否存在任何差异.由于步骤2是更新,我猜两个都会打两次数据库.
谁能告诉我有什么区别?
让我们假设我有一个在Entity Framework中直接执行sql命令的有效需求.我无法弄清楚如何在我的sql语句中使用参数.以下示例(不是我的实例)不起作用.
var firstName = "John";
var id = 12;
var sql = @"Update [User] SET FirstName = @FirstName WHERE Id = @Id";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);
Run Code Online (Sandbox Code Playgroud)
ExecuteSqlCommand方法不允许您传入ADO.Net中的命名参数,并且此方法的文档未提供有关如何执行参数化查询的任何示例.
如何正确指定参数?
我的印象是DbContext意味着代表你的数据库,因此,如果你的应用程序使用一个数据库,你只需要一个DbContext.但是,有些同事希望将功能区域分解为单独的DbContext类.我相信这来自一个好地方 - 希望保持代码清洁 - 但它似乎不稳定.我的直觉告诉我这是一个坏主意,但不幸的是,我的直觉并不是设计决策的充分条件.
所以我正在寻找A)为什么这可能是一个坏主意的具体例子,或B)保证这一切都很好.
entity-framework ef-code-first dbcontext entity-framework-4.3
我有以下代码.我收到错误:
"转换为值类型'Int32'失败,因为具体化值为null.结果类型的泛型参数或查询必须使用可空类型."
当CreditHistory表没有记录时.
var creditsSum = (from u in context.User
join ch in context.CreditHistory on u.ID equals ch.UserID
where u.ID == userID
select ch.Amount).Sum();
Run Code Online (Sandbox Code Playgroud)
如何修改查询以接受空值?
是否有"优雅"的方式给特定属性一个默认值?
也许通过DataAnnotations,类似于:
[DefaultValue("true")]
public bool Active { get; set; }
Run Code Online (Sandbox Code Playgroud)
谢谢.
entity-framework ×10
c# ×6
.net ×3
asp.net-mvc ×1
constraints ×1
dbcontext ×1
decimal ×1
sql-server ×1
unique-key ×1