我正在.Net 4.0中构建一个Windows应用程序来创建和组织电子项目.该应用程序的主要目的是记录电子组件的供应商信息(部件号,描述,价格等),并将它们组织(关联)到项目(成品)中.其中一个要求是跟踪任何给定供应商项目(主要是价格)的变化以及项目级别的变更,以便在组件级别和项目级别详细信息中提供变更的时间点统计信息.
鉴于客户端部署的简单性,我决定将Entity Framework 4用于数据访问层,使用SQL CE 3.5作为数据库.数据访问工作得很好,但是当试图创建对象之间的关系(关联)时,框架似乎没有任何明显的方法来使用历史数据.这是我第一次尝试使用实体框架,所以我认为这可能只是我的经验不足以阻止我找到答案.这是我的基本架构:
我有3个主要表:Project,Product和ProjectProduct
Project和Product表每个都有一个ID列和一个DateAdded列,用作复杂键.ProjectProducts表具有其他两个表中每个表的ID,并维护实体之间的多对多关系.关系表还有一个DateAdded列,用于跟踪产品/项目关联中的更改.
虽然实体框架似乎可以很好地维护使用标准代码生成的数据对象的直接关联(无日期标准),但是如何让它加载时间点历史数据的关联会有点混乱架构.基本上我需要能够根据时间点要求(参数化加载)的日期标准加载数据对象.
有没有人做过类似的事情,可以指出我正确的方向?
很抱歉有很长的解释,但提前感谢您提供的任何帮助!
.net entity-relationship entity-framework entity-framework-4
根据MS文档,VSTS的“ refs” API应该允许您从特定提交中创建一个新分支,但我似乎无法使其正常工作。这是我拥有的POC代码(在PowerShell中):
$uri = 'https://{account}.visualstudio.com/{project}/_apis/git/repositories/{repository}/refs?api-version=1.0';
[array]$requestList = @();
$requestObj = New-Object -TypeName psobject;
$requestObj | Add-Member -MemberType NoteProperty -Name "name" -Value 'refs/heads/api-branch1';
$requestObj | Add-Member -MemberType NoteProperty -Name "oldObjectId" -Value "0000000000000000000000000000000000000000";
$requestObj | Add-Member -MemberType NoteProperty -Name "newObjectId" -Value "272c5f931889e5c6cc61a6fdb19ad00eeebf2d77";
$requestList += @($requestObj);
$header = Get-AuthHeader;
$body = ConvertTo-Json -InputObject @($requestList);
Write-Host $body;
$response = Invoke-RestMethod -Uri $uri -Headers $header -Method Post -Body $body -ContentType application/json;
Write-Host $response;
Run Code Online (Sandbox Code Playgroud)
如Write-Host语句所报告,请求正文的格式正确,并且我已验证newObjectId是正确的提交ID。但是,当我运行脚本时,出现以下错误:
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Value cannot be null.\r\nParameter name: refUpdates","typeName":"System.ArgumentNullException, mscorlib, Version=14.0.0.0, …Run Code Online (Sandbox Code Playgroud) .net ×1