我们正在使用Entity Framework 6.0.0并首先使用数据库(像这样)从表和存储过程生成代码.这似乎很有效,除了在更新或刷新模型时不反映存储过程的更改.反映了向表中添加列,但未向存储过程添加字段.
有趣的是,如果我转到Model Browser,右键单击存储过程,选择Add Function Import并单击按钮,Get Column Information我们可以看到正确的列.这意味着模型知道列,但无法更新生成的代码.
有一种解决方法,即在更新模型之前删除生成的存储过程.只要您没有对存储过程进行任何编辑,这就可以工作.有谁知道避免这种解决方法的方法?
Visual Studio 2013截至2013年12月初,我正在使用所有最新更新.
提前致谢!
更新1: andersr的回答有助于一个案例,其中存储过程使用临时表,所以我给了他+1,但它仍然无法解决更新简单存储过程的主要问题.
更新2: shimron的评论下面链接到关于EF 3.5中相同问题的问题.对于EF 6.0来说,似乎仍然如此.阅读它是为了另一种方法,但我现在的结论是,最简单的方法是在更新模型之前删除生成的存储过程.如果你想做一些奇特的事情,可以使用部分课程.
stored-procedures entity-framework ef-database-first entity-framework-6 visual-studio-2013
就在最近,我遇到了一个名为Application Strangler Pattern的想法.据我了解,它是大型遗留系统问题的解决方案.我们的想法是围绕旧应用程序创建一个新的应用程序.这种成本和风险远远低于完全重写系统的成本和风险.慢慢地,随着时间的推移,新应用程序将做越来越多的工作,并最终扼杀旧的遗留应用程序.与此同时,开发人员可以在一个干净的新系统中工作,效率更高,并希望能够生成更好的代码.
我现在工作的地方是新功能,即使是看似微不足道的事情,需要很长时间才能开发,有很高的破坏风险.我们坐了大约一百万行代码,单元测试覆盖率可能达到1-2%.该系统是一个使用Web服务的SOA系统(两者都不是必需的),并且在风格上比面向对象更具程序性.该系统既是web又是win,都是用.net编程语言编写的.
最后一个问题: 在考虑这个新的想法/模式时,我想知道是否有人有使用这种模式的经验,他们想分享.例如,实现它的好方法是什么(例如,连接旧应用程序中的事件)?此外,如果任何人对这个问题有任何想法,为什么它会是一个好的或坏的想法,那也是值得赞赏的.
参考文献:
在ContentPage我有一个ListView内StackLayout内ScrollView.将ListView填充(ItemSource设置)中ContentPage时OnAppearing被调用,我可以看到这个列表是在模拟器填充.该StackLayoutS方位是Vertical和下面ListView我有一个Button.
我的问题是,无论有多少元素ListView,它的高度为53.33.我希望ListView它的高度与其中物品的总高度相匹配.通过设置HeightRequest我可以设置ListView我想要的任何东西的高度,但由于我不知道ListView结果内部项目的高度通常是与它下面的按钮的距离是不正确的,因此看起来很丑.我试图设置VerticalOptions两个上ListView和StackLayout对Start等设置,但这并不高度从53.33改变(如果我尝试用结合HeightRequest和Start事实证明,HeightRequest胜出).
我怎么解决这个问题?
(请原谅Xamarin论坛的交叉发布)
我目前正在使用几个委托处理程序(派生自的类DelegatingHandler)在发送之前处理请求,例如验证签名等.这一切都非常好,因为我不必在所有调用上复制签名验证(例如).
我想对来自同一Web请求的响应使用相同的原则.是否有类似于DelegatingHandler的响应?在某种方式中,在返回到方法之前捕获响应的方法是什么?
附加信息:我正在使用web api HttpClient.PutAsync(...)
我上课了
public class Money
{
public string Currency { get; set; }
public decimal Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并希望将其序列化为JSON.如果我使用JavaScriptSerializer我得到
{"Currency":"USD","Amount":100.31000}
Run Code Online (Sandbox Code Playgroud)
由于API我必须符合需要JSON数量最多两位小数,我觉得应该可以以某种方式改变JavaScriptSerializer序列化十进制字段的方式,但我不知道如何.还有就是SimpleTypeResolver你可以在构造函数中通过,但它只能在类型,只要我能理解工作.该JavaScriptConverter,您可以通过添加RegisterConverters(...)似乎是要进行Dictionary.
我想得到
{"Currency":"USD","Amount":100.31}
Run Code Online (Sandbox Code Playgroud)
在我序列化之后.此外,改为双倍是不可能的.我可能需要进行一些舍入(100.311应该变为100.31).
有谁知道如何做到这一点?是否有替代方案JavaScriptSerializer可以让您更详细地控制序列化?
我有一个继承自ApiController的类.它有一个像这样的Put方法:
[PUT("user/{UserId}")]
public HttpResponseMessage Put(string userId, PaymentRequest paymentRequest)
{
// Calling business logic and so forth here
// Return proper HttpResponseMessage here
}
Run Code Online (Sandbox Code Playgroud)
该方法在上面工作正常.现在我需要验证方法调用的签名,但在这里我遇到了一个问题.签名本质上是方法+ url + body的组合.我可以通过调用Request.Method和我可以通过调用Request.RequestUri.ToString()得到的url获得的方法,但是我无法得到它之前的身体,因为它被自动反序列化为PaymentRequest对象之前 asp.net MVC4框架.
我的第一次尝试: 因为我现在已经理解了Request.Content.ReadAsStringAsync().结果什么也没有返回.这是因为内容只能读取一次.
我的第二次尝试: 我尝试将其序列化为JSON字符串.
var serializer = new JavaScriptSerializer();
var paymentRequestAsJson = serializer.Serialize(paymentRequest);
Run Code Online (Sandbox Code Playgroud)
这个问题是格式化与签名的正文部分略有不同.它具有相同的数据,但有一些空格.
我无法改变Put-method的调用者所做的事情,因为这是第三方组件.我该怎么办?
我是Lean/Kanban的新手,但在过去的几周内已经涌入了在线资源,并提出了一个我没有找到合适答案的问题.精益/看板似乎非常适合我们已经使用Scrum的公司,但在该方法中已经达到了一些限制.我希望这里有人能给我一个好主意.
正如我所看到的,Scrum over Waterfall的最大优势之一就是使用sprint.通过每14天准备好一切,您可以获得较短的反馈周期并且可以经常发布.然而,正如我从阅读Lean中所了解的那样,有一些与此相关的成本(例如,在sprint计划会议上花费的时间,团队承诺会议以及在sprint结束时找到对每个人有用的一些问题).
精益/看板将删除这些废物,但仅以不能每14天释放为代价.或者我错过了重要的一点?因为,在看板中,您如何处理新的开发任务并同时发布?你怎么确定你不发货的东西只做了一半?你怎么能正确测试它?
到目前为止,我最好的"解决方案/想法"是:
总结一下,我的问题是:当您使用精益/看板时,您是否可以在不引入浪费的情况下经常发布?或者发布通常不是精益/看板的一部分?
特定于我公司的其他信息:我们使用Team Foundation System和Source Control,之前在分支和合并方面有过一些糟糕的经历.这可以通过引入这方面的一些专业知识来解决吗?
我需要使用Unity我的DI容器并想要引导AutoMapper.
使用StructureMap我可以这样做;
For<IMappingEngine>().Use(() => Mapper.Engine);
Run Code Online (Sandbox Code Playgroud)
我该怎么办Unity?
我已经使用包管理器来获取当前最新版本的AutoMapper2.2.1-ci9000,但在更简单的情况下也可以使用2.2.0.我使用的是2.1.505.0版Microsoft.Practices.Unity.
dependency-injection ioc-container unity-container automapper
我想使用最新版本,但不能使用任何依赖.Net 4.0或更新版本的新项目.
我已经看过这个问题了,所以我知道我至少可以使用2.4.9版本,但是我可以使用任何更新的版本吗?
我最近试图了解C#的新async/await和Task.Run功能.在这样做的过程中,我编写了一些简单的测试代码,这些代码写入控制台,以便我可以看到事情发生的顺序,在这里和那里抛出一个Thread.Sleep以确保事情按照我预期的顺序发生.
这是我的一个测试
[Test]
public void TaskRun()
{
Console.WriteLine("Before");
Task.Run(() => Console.WriteLine(_terminator.IWillBeBack()));
Console.WriteLine("After");
}
Run Code Online (Sandbox Code Playgroud)
使用以下Terminator类:
public class Terminator
{
public string IWillBeBack()
{
return "I will be back";
}
}
Run Code Online (Sandbox Code Playgroud)
由此我预计结果很可能是之前,之后,然后我会回来.确实发生了这种情况.然后我对IWillBeBack方法进行了更改,使其能够休眠3秒钟.这个代码:
public class Terminator
{
public string IWillBeBack()
{
Thread.Sleep(3000);
return "I will be back";
}
}
Run Code Online (Sandbox Code Playgroud)
我预计结果仍然是之前,之后,然后再过 3秒后我会回来.这不是发生的事情.我反而得到之前和之后,但从来没有我会回来的.
为什么是这样?
当我调试它清楚地通过代码,睡觉和返回.我不需要在任何生产代码中以这种方式使用Thread.Sleep,但是我想在第二种情况下模糊地理解为什么我将不会写入控制台.
c# ×4
.net ×1
.net-3.5 ×1
.net-4.5 ×1
architecture ×1
asp.net ×1
async-await ×1
automapper ×1
c#-5.0 ×1
json ×1
kanban ×1
methodology ×1
structuremap ×1