有没有人对.SaveChanges()方法的使用有一些很好的信息?
尝试在我的数据上下文对象上使用.SaveChanges()方法时遇到各种问题.我从现有数据源获取数据,创建适当的EntityFramework/DataService对象,用数据填充这些创建的对象,将这些对象添加到上下文,然后通过调用.SaveChanges保存该数据.
我提出的场景(以及与它们相关的问题)就是这样......在每个场景中,我都有一个foreach循环,它从DataTable中的行获取数据并生成对象,将它们作为上下文附加到上下文中他们去.(注意:三个对象是"成员"和两个通过SetLink调用连接的"地址") - 基本上这是一个转换工具,用于从一个数据存储中获取数据并将其按压到数据服务公开的数据存储中.
在执行像这样的大数据加载时,从客户端对象调用.SaveChanges()的首选方法是什么?有什么我不知道如何.SaveChanges()的工作原理?任何人都可以提供有关如何使用此功能以及通过数据服务保存数据的限制(如果有)的更多详细信息?围绕.SaveChanges()方法调用是否有任何最佳实践?是否有关于.SaveChanges()方法调用的特别好的文档?
有没有人有关于在ASP.Net MVC应用程序中使用Web服务作为模型的建议或提示?我没有看到有人写这样做.我想构建一个MVC应用程序,但不是将它绑定到使用特定数据库,也不是将数据库限制为单个MVC应用程序.我觉得一个Web服务(RESTful,很可能是ADO.Net数据服务)是要走的路.
我在对象A到B的数据库中有多对多的关系.当我创建域服务时,元数据看起来很好.A有Bs的集合,B有As的集合.所以这是正确的.但是生成的*.g.cs文件没有相同的关系.
有没有办法让它发挥作用?我用Google搜索了一些实际为关联表生成对象的答案,但我很好奇我是否可以避免这种情况.
谢谢
从我阅读和观看的所有内容看来,从WCF数据服务公开JSON应该像将JSONPSupportBehavior属性添加到服务类一样简单.
问题是VS2010无法识别该JSONPSupportBehavior属性.
有遗漏的参考吗?从所有文章看来,它开箱即用.
对于哪些应用程序或开发方案,WCF数据服务的使用是有意义的,何时其他技术是更好的选择(例如WCF RIA服务,ADO实体框架,经典ADO.NET,简单服务或其他)?
我想自定义从我的WCF数据服务抛出的异常/错误,以便客户尽可能多地获取有关哪些错误/缺少什么的信息.有关如何实现这一点的任何想法?
我正在使用RestKit连接到我们的WCF数据服务.
由于响应映射问题,我在使用RKObjectManager的postObject函数添加实体时遇到问题.
添加实体时,WCF数据服务返回201状态代码和新添加的实体(作为响应).
是否可以忽略响应并只使用返回的状态代码来检查添加是否成功?
Ponnu
我们一直在使用以下堆栈开发一个新的应用程序:
SQL Server 2008 R2 - >实体框架4.2 - > WCF数据服务 - > WCF数据服务客户端库
这都是.NET 4.0
现在,WCF数据服务客户端库非常便于小数据和简单的模式/对象图,但它对于更复杂的模型来说是一个真正的好处.特别是,我们发现DataServiceContext.Links集合可以扩展O(n ^ 2):你加载的对象越多,你的图表嵌套越多,它就越慢,直到加载数据需要更长的时间进入上下文比它从线上读取它.
例如,我们有一个拥有2000个成员的集合,每个成员有4个导航属性.在不扩展任何导航属性的情况下拉动整个集合大约需要1秒钟.扩展所有4个导航属性需要5秒.我们测量了堆栈中各个点的性能,并且大部分额外时间花在客户端上,整理数据.
我们采用了各种技术来解决大数据集:
有谁知道其他任何技术?在加载相关对象时,是否存在可能导致不必要开销的设置?
有时看起来我们正在编写自己的自定义上下文的一半,我想在它变得更精细之前进行健全性检查.
[是的,我意识到WCF数据服务可能是错误的工具.唉,我们已经走了这条路]
我最近将Microsoft.WindowsAzure.Storage的nuget包更新为3.0包,其中还包括对WCF数据服务客户端及其依赖项的更新.由于更新,我在查询解决时收到错误:
"客户端和服务之间存在类型不匹配.类型'ShiftDigital.Flow.Data.RouteDiagnostic'不是实体类型,但响应有效负载中的类型表示实体类型.请确保客户端上定义的类型匹配服务的数据模型,或更新客户端上的服务引用."
我什么也没做,只是更新了软件包,我的应用程序和我在LinqPad中设置的测试脚本生成了这个异常.
这是我在更新之前返回的实体的定义
public class RouteDiagnostic : TableEntity
{
public long? LeadRecipientRouteId { get; set; }
public bool Successful { get; set; }
public int Duration { get; set; }
public string Request { get; set; }
public string Response { get; set; }
public RouteDiagnostic()
: base()
{
this.Timestamp = DateTimeOffset.Now;
this.PartitionKey = GetPartitionKey(this.Timestamp.Date);
this.RowKey = Guid.NewGuid().ToString();
}
public static string GetPartitionKey(DateTime? keyDateTime = null)
{
return string.Format("{0:yyyyyMM}", keyDateTime ?? DateTime.Now);
}
}
Run Code Online (Sandbox Code Playgroud)
这是执行查询的代码
var storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse("..."); …Run Code Online (Sandbox Code Playgroud) 在Web API上的OData 4服务中,从.NET客户端调用嵌套$ expand的正确方法是什么?我们正在使用OData客户端生成器.回到之前使用OData 3服务的WCF数据服务,我们可以调用.Expand("Customers/Orders").在使用OData 4的Web API中,我们不能再这样做,并且如果您尝试,则会收到以下内容.Expand("Customers/Orders"):
URI中指定的查询无效.找到遍历多个导航>属性的路径.请重新调整查询,使每个展开路径仅包含类型>段和导航属性.
我们可以通过调用expand来解决这个问题:.Expand("Customers($expand=Orders)").在非嵌套的$ expand场景中,我喜欢lambda支持.Expand(d => d.Customers)..NET OData 4客户端是否有正确的方法来调用嵌套的扩展而没有不幸的魔术字符串.Expand("Customers($expand=Orders)")?如果没有,是否有一个更清洁的字符串模式,如"客户/订单",这将有效吗?谢谢.
astoria wcf-data-services odata asp.net-web-api wcf-data-services-client
.net ×2
odata ×2
asp.net-mvc ×1
astoria ×1
azure ×1
ios ×1
jsonp ×1
objective-c ×1
post ×1
rest ×1
restkit ×1
savechanges ×1
silverlight ×1
wcf ×1