我有一个具有以下结构的实体框架POCO.
public class Entity
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我为这个实体创建了一个数据传输对象供我的视图使用.
public class EntityDto
{
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,我在Global.asax文件中有以下映射代码.
Mapper.CreateMap<Entity, EntityDto>();
Mapper.CreateMap<EntityDto, Entity>(); // not sure whether I need this as well?
Run Code Online (Sandbox Code Playgroud)
一切正常,我将DTO传递给我的观点确定,我可以Entity从我的EntityDto模型中创建一个新实例.当我尝试编辑我的问题时出现问题Entity; 我知道这是由于AutoMapper失去了EF创建的跟踪对象更改的实体密钥,但是通过一些来源读取似乎并不是一个明确的解决方案.这是我用来编辑我的实体的动作.
public ActionResult EditEntity(EntityDto model)
{
var entity = context.Entities.Single(e => e.Id == model.Id);
entity = Mapper.Map<EntityDto, …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来添加两个实体之间的关联,并具有外键的可设置ID.我搜索过以前的帖子,但我能找到的最接近的建议是.加入协会 - 这不是我所希望的.我知道这可以在带有.HasForeignKey绑定的Entity Framework中完成,但我似乎无法在Fluent NHibernate中找到一种方法.
以两个示例实体为例:
public class Ticket
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual string ServiceId { get; set; }
public virtual Service Service { get; set; }
}
public class Service
{
public virtual string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够创建Ticket的新实例并使用以下方法为其分配服务(假设表中已存在关联的服务):
Ticket ticket = new Ticket() {
Title = "Problem with MS Word",
ServiceId = "Microsoft Word 2012" …Run Code Online (Sandbox Code Playgroud) c# foreign-key-relationship fluent-nhibernate fluent-nhibernate-mapping
我目前正在使用带有Entity Framework的WCF数据服务(以及ADO.Net数据服务),并且在执行POST时出现以下错误(省略/更改了一些不相关的信息):
<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code /><m:message xml:lang="en-GB">The URI 'http://localhost:56568/MyWcfDataServices.svc/EntitySetName(pk_id)' is not valid for POST operation. For POST operations, the URI must refer to a service operation or an entity set.</m:message></m:error>
Run Code Online (Sandbox Code Playgroud)
在网上浏览一下,我似乎无法找到有关此消息的大量信息,因此调试它有点困难.这可能是因为我发布的一个属性是一个很大的base64字符串(如果我不发布它,它可以正常工作).我试过设置maxRequestLength如下:
<httpRuntime maxRequestLength="102400" />
Run Code Online (Sandbox Code Playgroud)
但它似乎没有帮助.虽然我会继续解决这个问题,但我想我会在这里做一个快速的帖子,看看是否有人知道可能会有所帮助的事情.
我的WCF数据服务类如下所示:
public class MyWcfDataServices: DataService<ContextName>
{
public static void InitializeService(DataServiceConfiguration config)
{
// set entity access rules etc
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑:我似乎没有得到这个.这是我到目前为止所尝试的内容.
在服务器端,我设置了以下绑定:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
minFreeMemoryPercentageToActivateService="0" />
<services>
<service name="MyWcfDataServices"
behaviorConfiguration="myBehaviorConfig">
<endpoint address=""
binding="webHttpBinding"
bindingConfiguration=""
contract="System.Data.Services.IRequestHandler" />
</service>
</services>
<behaviors> …Run Code Online (Sandbox Code Playgroud) 我有一个observableArray可选项(在表中).我要做的是点击表格行打开一个模态,用项目详细信息填充模态,允许编辑项目然后保存更改 - 反映更新的项目observableArray.到目前为止,我已经完成了其他所有工作,但似乎无法更新数组项.
到目前为止,我已经尝试过:
observableArray的observable.replace在数组上使用来更新项目 - 这确实有效,但它只是感觉不对我在上面提供了一个jsFiddle链接,演示了我想要实现的目标.
查看模型和初始化
随意就我如何初始化任何建议,self.selectItem我目前在KnockoutJS的学习阶段,并通过与模拟项目玩弄这样做,所以我向所有人开放的建设性的批评.
var items = [{
Id: 1,
Text: 'First item'
}, {
Id: 2,
Text: 'Second item'
}];
var viewModel = function (items) {
var self = this;
self.items = ko.observableArray(items);
self.selectedItemId = ko.observable();
self.item = ko.observable();
self.selectItem = function (item) {
for (var i = 0; i < self.items().length; i++) {
if (self.items()[i].Id …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Ninject作为我的DI工作的MVC 3项目,业务对象存储在一个单独的程序集中.我遇到了控制器参数的问题,当回发CRUD操作时,我收到错误"无法创建接口的实例".我知道你不能创建一个接口的实例,但似乎我可以解决的唯一方法是使用自定义模型绑定器并通过FormCollection.这看起来非常混乱,我想尽可能多地保留项目中特定类型的代码 - 因此在任何地方接口和Ninject到DI的混凝土.自定义模型绑定不仅看起来很乱 - 我不会丢失我的DataAnnotations吗?
一些代码来描述我的内容:
public ActionResult Create()
{
// I'm thinking of using a factory pattern for this part
var objectToCreate = new ConcereteType();
return (objectToEdit);
}
[HttpPost]
public ActionResult Create(IRecord record)
{
// check model and pass to repository
if (ModelState.IsValue)
{
_repository.Create(record);
return View();
}
return View(record);
}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个?你是怎么克服它的?
谢谢!
dependency-injection interface model-binding loose-coupling asp.net-mvc-3
我最近注意到,在我的项目增长到一定规模后,我最终在VS2010中获得了很多令人讨厌的打字延迟.它会影响每种语言,我输入的每个单词最终需要大约5秒才能渲染 - 与删除相同,它也会很好地缓冲它们,好像我变得不合理地不耐烦并在3秒后再次点击删除...它会处理我的所有删除.
所以显而易见的是硬件:Intel Core2 6300 @ 1.87GHz,2GB RAM,32位操作系统和通常的7200rpm 8MB缓存硬盘,不应该经历这么多的滞后!所以我决定卸载并重新安装VS2010以删除我可能正在使用的任何插件(我个人安装的唯一插件是Subversion的AnkhSVN).仍然是完全相同的问题.
我到现在为止,我只是附加了一个调试器来查看我的devenv.exe进程的本机代码,我看到我输入的每个字符都会在devenv.exe中的0x757ed36f处抛出大量的这些第一次机会异常:0xE0434352:0xe0434352. - 任何人都知道这是什么/如何找到这些补偿的来源?
我正在使用表达式构建一个自定义HTML帮助器来绘制标签云,其中进入标签云的数据来自表达式.我会让代码在这里谈谈:
查看模型
public class ViewModel
{
public IList<MyType> MyTypes { get; set; }
public IList<MyOtherType> MyOtherTypes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图
<div>
@Html.TagCloudFor(m => m.MyTypes)
</div>
<div>
@Html.TagCloudFor(m => m.MyOtherTypes)
</div>
Run Code Online (Sandbox Code Playgroud)
帮手
public static MvcHtmlString TagCloudFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) where TProperty : IList<MyType> where TProperty : IList<MyOtherType>
{
// So my actual question here is: how do I get my IList<TProperty> collection
// so I can iterate through and build my HTML control
}
Run Code Online (Sandbox Code Playgroud)
我已经快速浏览过并完成了常规的Google搜索,但我似乎无法找到具体的答案.我认为它在某个地区,expression.Compile().Invoke() …
我基本上在我的页面上进行了以下验证 - 它是一个单词规则,文本框中的描述不能超过3个单词,不包括单词'和'.我在C#中实现了以下服务器端验证,它运行正常
if (Desc.Trim().ToString() != "")
{
MatchCollection collection = Regex.Matches(Desc.Replace("and", ""), @"[\S]+");
if (collection.Count > 3)
{
ErrorMsg.Append("Description should contain at most 3 words(excluding 'and').");
ErrorMsg.Append("\\n");
}
}
Run Code Online (Sandbox Code Playgroud)
但是我很难在Javascript中使用相同的工作.我已经尝试了以下但是它到目前为止还没有工作,所以希望有更好的Javascript知识的人可以看到错误.注意if是在页面上触发的更大验证函数的一部分 - 警报只是在那里看它是否进入这个if(它没有) - 当这个块被删除时,页面上的其余JS是工作正常.
if (Desc.val().trim() != "")
{
alert('1');
!regexWordRule.test(Desc.val());
alert('2');
if (Desc.val().match(regexWordRule).length > 3)
{
errorText += "Description should contain at most 3 words(excluding 'and').";
}
valid = false;
}
Run Code Online (Sandbox Code Playgroud)
以下是我在js文件最顶部定义的regexWordRule.
var regexWordRule = /[\S]+/;
Run Code Online (Sandbox Code Playgroud) 我在使用Open XML生成.docx时遇到了一个奇怪的问题.我有一个TableCell具有Paragraph然后Run再Text像这样产生的:
tblRow.Append(new TableCell(new Paragraph(GetPropertiesForStyle("TableDescription"), new Run(new Text(colName)))));
Run Code Online (Sandbox Code Playgroud)
该GetPropertiesForStyle方法返回ParagraphProperties特定段落并设置样式.这一切都很好,但是在表格行中,第一个单元格之前似乎有双倍间距,最后一个单元格之后有两个间距 - 中间的所有单元格看起来都非常精细.

我的样式配置如下所示:
new Style(
new StyleName() { Val = "TableDescription" },
new StyleParagraphProperties(
new ParagraphBorders(
new BottomBorder() { Val = BorderValues.None }
),
new SpacingBetweenLines() { Before = "100", After = "100", Line = "200", LineRule = LineSpacingRuleValues.Exact },
new TableCellVerticalAlignment() { Val = TableVerticalAlignmentValues.Center }
)
),
Run Code Online (Sandbox Code Playgroud)
我使用生产力工具检查了生成的XML,并且它完美地应用了这些属性.每个TableCell都有以下配置(在那里有一些额外的边距属性和一个着色器填充,为简洁我省略了).
<w:tc>
<w:p>
<w:pPr>
<w:pStyle w:val="TableDescription" />
</w:pPr> …Run Code Online (Sandbox Code Playgroud) 我已经看过其他问题,但没有什么能与我正在寻找的东西相提并论......主要是因为我不是100%肯定我正在寻找什么!
基本上我现在正在开发一个新项目,我已经为数据库实体创建了抽象层,并将DAC设置为存储库.我想用Mock对象对它进行单元测试,但是我已经用CRUD(特别是C)操作打了一个智能墙,我的单元测试类:
[TestClass]
public class RepositoryTest
{
private Mock<IPersonRepository> _repository;
private IList<IPerson> _personStore;
[TestInitialize()]
public void Initialize()
{
_personStore= new List<IPerson>() {
new Person() { Name = "Paul" },
new Person() { Name = "John" },
new Person() { Name = "Bob" },
new Person() { Name = "Bill" },
};
_repository = new Mock<IPersonRepository>();
_repository.Setup(r => r.Entirely()).Returns(_personStore.AsQueryable());
}
[TestCleanup()]
public void Cleanup()
{
_personStore.Clear();
}
[TestMethod()]
public void Can_Query_Repository()
{
IEnumerable<IPerson> people = _repository.Object.Entirely();
Assert.IsTrue(people.Count() == 4);
Assert.IsTrue(people.ElementAt(0).Name == …Run Code Online (Sandbox Code Playgroud) c# ×6
.net ×1
automapper ×1
html-helper ×1
interface ×1
javascript ×1
knockout.js ×1
linq-to-sql ×1
moq ×1
openxml ×1
performance ×1
repository ×1
validation ×1