我的问题是这个问题的一部分:
我从一个表单中收到了一个id的集合.我需要获取密钥,将它们转换为整数并从数据库中选择匹配的记录.
[HttpPost]
public ActionResult Report(FormCollection collection)
{
var listofIDs = collection.AllKeys.ToList();
// List<string> to List<int>
List<Dinner> dinners = new List<Dinner>();
dinners= repository.GetDinners(listofIDs);
return View(dinners);
}
Run Code Online (Sandbox Code Playgroud) 有没有办法在代码中获取当前版本的ASP.NET MVC?需要反思MVC程序集吗?任何新的IIS服务器变量?在HTTP上下文中读取一些属性?
我有一个asp.net-mvc网页,我想显示一个基于枚举的下拉列表.我想显示每个枚举项的文本,id是与枚举关联的int值.有没有优雅的方式进行这种转换?
我正在使用Unity IoC容器来解析我的对象.但是,我遇到了一个问题.当我有多个构造函数时 - Unity如何知道使用哪一个?当我有一个和一个没有时,它似乎使用带参数的那个.我可以明确告诉它使用哪个构造函数吗?
具体来说,我有一个类似于以下带有两个构造函数的Person类的情况.在这种情况下,我希望IoC容器使用默认构造函数 - 没有参数 - 但它选择带参数的容器.
public class SomeValueObject
{
public SomeValueObject(string name)
{
Name = name;
}
public string Name { get; set; }
}
public class Person
{
private string _name;
public Person()
{
_name = string.Empty;
}
public Person(SomeValueObject obj)
{
_name = obj.Name;
}
}
Run Code Online (Sandbox Code Playgroud)
这显然失败了,因为它无法创建SomeValueObject - 不知道要向其字符串参数注入什么.它给出的错误是:
解决依赖关系失败,type ="MyApp.Person",name ="".异常消息是:当前构建操作(构建密钥Build Key [MyApp.Person,null])失败:尝试调用构造函数MyApp.Person(MyApp.SomeValueObject obj)时无法解析参数obj.(策略类型BuildPlanStrategy,索引3)
集装箱登记:
Container.RegisterType<Person, Person>(new Microsoft.Practices.Unity.ContainerControlledLifetimeManager());
Run Code Online (Sandbox Code Playgroud)
并解决:
var person = Container.Resolve<Person>();
Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用了更多的单元测试并阅读了我可以在线获取的所有信息,并且很多术语让我感到困惑.因此,我可能在对话和谷歌搜索中错误地使用这些术语.
有人可以概述所有单元测试术语,如"假"类型以及测试类型(交互与集成)?
这两种查询上下文的方式有什么区别吗?
Firm firm = base.context.Firms
.Where(f => f.SomeId == someId)
.Where(f => f.AnotherId == anotherId)
.FirstOrDefault();
Firm firm = base.context.Firms
.Where(f => f.SomeId == someId && f.AnotherId == anotherId)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
似乎链接完全可以完成AND条件.我不相信你可以链接OR语句.是否有理由更喜欢一个,或者一个更好/更有效的情况?
如何Services和Repositories在DDD的相互关系?我的意思是,在过去的两天里,我一直在阅读DDD,无论我走到哪里,总会有Service一层,而且总有Repository一层.这些如何区分或互相恭维?
从我所读到的,不是Repository负责委托应用程序和数据之间的交互的层?
那么,Service如果层必须实现Repository与数据交互,那么对层的需求是什么,即使Repository可能已经实现了所需的方法?
我很欣赏这个主题的一些启示.
PS不知道这是否有用,但我正在使用ASP.NET MVC 2应用程序,我正在尝试实现Repository模式.我刚刚完成了依赖注入模式的实现(有史以来第一次)......
UPDATE
好的,有这么多答案,我想我明白了它的不同之处.所以,审查(纠正我,如果我错了):
阿Repository层只与单个对象从数据库或ORM的相互作用,IEmployeeRepository- > Employee.
阿Service层封装上从返回的对象更复杂的功能Repositories,无论是一个或多个.
那么,我有一个子问题.创建要发送到我的视图的抽象对象被认为是不好的做法吗?例如一个AEmployee(A对于abstract因为对我来说I意味着interface),其含有从性能Employee和X或X?
实际上,还有一个问题.如果一个Service层可以被认为是"调整"的应用程序,它是否需要通过接口实现?
出乎意料的是,当使用nhibernate进行大量更新时,我收到此错误.
行已被另一个事务更新或删除(或未保存的值映射不正确):[MyDomainObject]
错误中没有其他信息.是否有一些建议的方法来帮助确定根本问题,或者有人可以给我一个更好的解释这个错误指示或是一个sympton周围.
我查看了对象,所有数据看起来都很好,它有一个ID等..
请注意,这是在asp.net-mvc网站的单个调用堆栈中运行,因此我不希望在并发性方面存在任何线程问题需要担心.
MVC.net场景的新手(以及.net),但是当我想要用数据填充"列表"时,我似乎找到了各种各样的选项.在我的情况下,我想从一个选择的项目查询填充一个列表,并用JSON渲染结果输出,所以请耐心等待....
所以,我的viewmodel类是这样的:
[Serializable()]
public class TFSquery
{
public int MsgUid { get; set; }
public DateTime CreateStamp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我想用我的查询输出填充它:
List<TFSquery> z = (from msg in _DB.Msg
select new { msg.MsgUID, msg.CreateStamp }).ToList();
Run Code Online (Sandbox Code Playgroud)
那么我会将输出循环到我的List中,以便我可以在我的Json返回字符串中输出吗?当我使用LIST VS IENUMERABLE VS IQUERYABLE?
return Json(new { Result = z }, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud) (int)(33.46639 * 1000000) 回报 33466389
为什么会这样?