我是Azure DocumentDB的新手,我在尝试时遇到了问题.在第一次保存空集合时,我收到以下错误:
ResourceType文档是意外的.
ActivityId:29619975-e55a-4f31-a3d1-73d180ba3932
我的存储库代码(部分)如下:
public interface IEntity
{
string Id { get; set; }
DateTime DbCreatedAt { get; set; }
DateTime DbLastUpdatedAt { get; set; }
}
public class Repository<T>: IRepository<T> where T: class, IEntity
{
private DocumentClient _documentClient;
private string _databaseName;
private string _collectionName;
// ....
// ....
public Task SaveAsync(T entity)
{
var documentUri = UriFactory.CreateDocumentUri(_databaseName, _collectionName, entity.Id);
return _documentClient.UpsertDocumentAsync(documentUri, entity);
}
}
Run Code Online (Sandbox Code Playgroud)
这是第一次将任何内容写入此数据库/集合.难道我做错了什么?
我的应用程序使用两个不同的SQL 2008数据库 数据库有几个具有相同名称的表,即.Users.我想将EF4用于这两个数据库.但是,当我运行我的应用程序并且它遇到第二个数据库的objectcontext创建时,我收到以下错误:
名称为"User"的多个类型存在于不同名称空间中的EdmItemCollection中.基于约定的映射需要唯一的名称,而不考虑EdmItemCollection中EdmItemCollectionto命名空间中的命名空间
这是否意味着我不能在同一个应用程序中使用两个具有(部分)相同表名的数据库?它们位于不同的名称空间,不同的edmx模型,不同的项目等.
PS其中一个模型是设计者生成的并使用POCO类,另一个是从数据库中推断出来并与EF紧密耦合.
在实体框架(或linq-to-sql)中与SQL Server结合使用编译查询时,使用存储过程实际上是否仍有任何性能优势?
编译的查询将作为参数化查询进行缓存,因此性能应该接近存储过程.是否存在存储过程表现更好的情况?
- 编辑 -
为了回应下面的Yakimych的回答,我并不是要暗示编译的查询与存储过程相同.如果你在应用程序端完成所有可能的优化(在这种情况下是编译查询),我试图找出是否仍然需要sprocs.所以我想我正在寻找为什么存储过程比应用程序端优化和参数化查询(这是有效编译查询)的组合更好的原因.
我问这个的原因之一是因为有很多人似乎认为不再需要存储的程序因为不同的原因(即这篇文章).
考虑以下:
bool invalidChildren = this.Children.Any(c => !c.IsValid());
Run Code Online (Sandbox Code Playgroud)
此类具有一组具有IsValid()方法的子对象.假设该IsValid()方法是处理器密集型任务.遇到的第一个孩子对象,其中经过IsValid()是false,理论上可以处理停止,因为结果可能永远不会成为现实.LINQ to对象实际上是在第一个之后停止评估IsValid() = false(如逻辑AND)还是继续评估所有子对象?
显然我可以把它放在foreach循环中并打破第一个无效结果,但我只是想知道对象的LINQ是否足够智能来做到这一点.
编辑: 谢谢你的答案,由于某种原因,我不认为自己在MSDN上查找它.
每当我在Windows 2003服务器上安装新字体时,我都无法在我的asp.net Web应用程序中立即使用它.应用程序通过CreateFontIndirectgdi32.dll win api 获取字体,然后使用此字体在我的asp.net应用程序中创建动态文本图像.看起来字体会被缓存到某个地方,因为我只会返回返回的默认字体.
字体缓存在重新启动后得到更新,然后我得到了正确的字体,但显然我不想在生产服务器上重新启动只是为了让新字体工作.
有没有办法刷新字体缓存?
我正在使用jQuery.data()来存储jQuery DOM对象引用:
myObj.data('key', $('#element_id'));
Run Code Online (Sandbox Code Playgroud)
我会经常使用它(通常是相同的DOM对象),所以我不想占用太多内存.jQuery是存储引用,还是存储DOM对象的深层副本?在这种情况下,我认为最好存储元素id而不是元素引用.
我正在开发一个使用MVC4 WebAPI(RC)的项目.响应不是gzip压缩的(IIS中的动态压缩已启用).
普通MVC控制器的响应被压缩.我是否需要特定设置才能为WebAPI响应启用gzip压缩?
我可以添加一个自定义压缩处理程序,但如果可能的话,我只想使用内置的IIS压缩.
顺便说一句,我知道这几乎是压缩HTTP GET响应的重复,但是那里接受的答案并没有真正回答我的问题.
asp.net-mvc gzip http-compression asp.net-mvc-4 asp.net-web-api
我有一个带有单例视图模型的Aurelia应用程序.该视图类似于文件浏览器,左侧是树视图(自定义元素),右侧是列表视图.视图模型activationStrategy是invokeLifecycle,并且列表视图基于路径参数填充.展开节点时,将使用AJAX调用填充树视图.树节点也是自定义元素.树视图是完全自定义的,不使用任何第三方插件.
当用户导航到另一条路线,然后再次返回到同一路线时,视图模型将保留,因为它是一个单例.但是,树视图不是因为不支持自定义元素作为单例.
我理解不支持单例自定义元素的原因.然而,我想知道在导航回同一路线时以某种方式创建"静态"树视图的最佳方法.到目前为止,我唯一想到的是在注入的共享状态下保持完整(扩展)树结构.然而,这似乎对我来说效率低下,因为树视图必须无缘无故地再次渲染,并且它使用添加的类和逻辑来创建树结构而不必要地使我的代码复杂化,而树结构已经隐含在自定义元素中.
任何输入都表示赞赏.
这个问题与我的另一个问题有关.
我有一个MVC应用程序,禁用所有控制器操作的缓存.我这样做是通过设置缓存响应头Application_BeginRequest:
protected void Application_BeginRequest()
{
HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
}
Run Code Online (Sandbox Code Playgroud)
有一个控制器操作我想要启用缓存.我用这个OutputCache属性装饰了这个动作:
[OutputCache(Duration = 300, VaryByParam = "id")]
Run Code Online (Sandbox Code Playgroud)
现在这个动作会发生什么?它是否因为OutputCache属性而被缓存,还是因为响应头而没有缓存?
- 编辑 -
看起来,响应标头优先.所以我的问题变成:如何为单个控制器操作启用缓存?再次覆盖响应头?
我正在一个单独的类库中开发一个MVC API.API方法使用属性路由.API将由其他MVC应用程序使用(不是由我构建的).
主要的MVC应用程序将引用我的库程序集并调用AddMvc()/ UseMvc()在它自己的启动类中.它可以动态地为我的API库设置根API URL(来自配置或选项设置委托),这样就可以确保它与自己的路由没有冲突,可以使用属性路由或集中路由.
所以我们假设我的API库有一条product/{id}路线.主应用程序应该能够选择任何路由前缀,如api/product/{id}或some/other/prefix/product/{id}.
在启动时,MVC将发现所有引用程序集中的所有控制器/路由,它还将发现并注册我的API库路由,但仅限于product/{id}没有任何前缀的硬编码路由.
我一直试图让MVC注册带有前缀的路由,但到目前为止还没有成功.主应用程序将调用custom AddMyApi()/ UseMyApi()config方法,因此我可以为我的库进行配置/设置.我试过的一些事情:
制图
app.Map("/custom-prefix", api =>
{
api.UseMvc();
});
Run Code Online (Sandbox Code Playgroud)
这将导致两个custom-prefix/product/{id}和的重复路由product/{id}.
路线公约
基于http://www.strathweb.com/2016/06/global-route-prefix-with-asp-net-core-mvc-revisited/
services.AddMvc(options =>
{
options.Conventions.Insert(0, new RouteConvention(new RouteAttribute("custom-prefix")));
});
Run Code Online (Sandbox Code Playgroud)
看起来这样做不会起作用,因为主应用程序调用AddMvc()或其他方式会覆盖选项,具体取决于首先调用哪些选项.
自定义路由属性
基于IRouteTemplateProviderController类的自定义路由属性将不起作用,因为我需要从options类注入前缀,并且属性不支持构造函数注入.
推迟发现路线
基于http://www.strathweb.com/2015/04/asp-net-mvc-6-discovers-controllers/
我已经添加[NonController]到库控制器中,以防止它们在主应用程序的启动时被发现.但是我以后无法添加它们,而且我想我会遇到主应用程序再次覆盖MVC选项的相同问题.
地区
我不能使用区域,因为主应用程序可能决定从根运行API(没有前缀).
所以我不知道如何解决这个问题.任何帮助表示赞赏.
c# ×5
.net ×3
asp.net-mvc ×2
javascript ×2
sql-server ×2
.net-core ×1
asp.net ×1
asp.net-core ×1
aurelia ×1
caching ×1
fonts ×1
gdi ×1
gzip ×1
jquery ×1
linq-to-sql ×1
outputcache ×1
typescript ×1
windows ×1