我正试图让OData端点启动并正常工作,我遇到了这个错误,即使谷歌也没什么可说的.
我已经创建了一个Entity Framework EDMX上下文(数据库优先),让设计者从中生成2个模型.
除了$filter查询失败之外,一切正常.
我可以做得很好:
http://localhost:27164/Projects(6587660)
Run Code Online (Sandbox Code Playgroud)
它检索主ID为6587660的Project.
但任何$filter要求如下:
http://localhost:27164/Projects?$filter=ProjectID eq 6587660
Run Code Online (Sandbox Code Playgroud)
将失败并出现以下错误:
URI中指定的查询无效.属性"ProjectID"不能在$ filter查询选项中使用.
我也尝试过查询其他属性,字符串属性.同样的错误.
我已经检查过EF生成的模型在属性上没有任何属性,但它们没有.
这是我在WebApiConfig.cs模块中的Register方法:
using System.Web.OData.Builder;
using System.Web.OData.Extensions;
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<DB.Project>("Projects");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: builder.GetEdmModel()
);
}
Run Code Online (Sandbox Code Playgroud)
这是Projects控制器(GetProjects是进行$ filter查询时的被调用方法):
public class ProjectsController : ODataController
{
private AppContext db = new AppContext(); …Run Code Online (Sandbox Code Playgroud) 那么您认为防止C#Windows服务的多个线程同时运行的最佳方法是什么(该服务是否使用了timer该OnElapsed事件)?
使用lock()或mutex?
我似乎无法掌握这个概念mutex,但使用lock()似乎对我的情况很好.
我是否应该花时间学习如何使用mutex?
所以我正在研究这个实体框架项目,它将被用作DAL的类型,并且在运行压力测试时(通过Thread()开始对实体进行一些更新)并且我得到了这些:
_innerException = {"事务(进程ID 94)在锁资源上与另一个进程死锁,并被选为死锁牺牲品.重新运行事务."}
这是我如何实现类的方法的一些示例:
public class OrderController
{
public Order Select(long orderID)
{
using (var ctx = new BackEndEntities())
{
try
{
var res = from n in ctx.Orders
.Include("OrderedServices.Professional")
.Include("Agency")
.Include("Agent")
where n.OrderID == orderID
select n;
return res.FirstOrDefault();
}
catch (Exception ex)
{
throw ex;
}
}
}
public bool Update(Order order)
{
using (var ctx = new BackEndEntities())
{
try
{
order.ModificationDate = DateTime.Now;
ctx.Orders.Attach(order);
ctx.SaveChanges();
return true;
}
catch (Exception ex)
{
throw ex; …Run Code Online (Sandbox Code Playgroud) 我试图在动作过滤器中向下转换一个控制器实例,我有问题这样做.
我有一DefaultController节课:
public abstract partial class DefaultController<T> : Controller where T : IBaseEntity
{
}
Run Code Online (Sandbox Code Playgroud)
IBaseEntity 是:
public interface IBaseEntity
{
int Id { get; set; }
DateTime CreatedOn { get; set; }
DateTime ModifiedOn { get; set; }
int CreatedBy { get; set; }
int ModifiedBy { get; set; }
int OwnerId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个控制器的实例,继承DefaultController:
public class WorkflowController : DefaultController<Workflow>
{
}
Run Code Online (Sandbox Code Playgroud)
Workflow是继承BaseEntity哪个实现IBaseEntity.
现在,在我的动作过滤器中,代码明智,不可能知道请求在哪个控制器上运行,所以我试图将它向下转换为 DefaultController
public class …Run Code Online (Sandbox Code Playgroud) 我在这里有此代码:
$(document).ready(function() {
debugger;
$("div[id^='stage_']").click(function (e) { alert('Hello'); });
});
Run Code Online (Sandbox Code Playgroud)
我无法解释的怪异之处在于,当我进入控制台后在进入调试器语句时执行选择器时,它返回一个空数组, []
但是,当我退出并进入页面时,然后在Chrome中按Ctrl-Shift-C开始检查,然后单击一些具有我要查找的ID的div,然后在控制台中再次执行选择器,现在我有我期望的元素。
我什至在这里尝试过,以验证它是否是异步的。加载问题(这是我无法完全控制的系统)。但是仍然,当到达调试器时,选择器不起作用-即使等待了10秒(然后我也很确定div在那里)。我仍然必须进入检查器,以便jQuery识别元素。
$(document).ready(function() {
//debugger;
setTimeout(function() {
debugger;
$("div[id^='stage_']").click(function (e) { alert('allo'); });
}, 10000);
});
Run Code Online (Sandbox Code Playgroud)
为什么jQuery只知道我用Chrome的检查器单击的元素?
我试图拥有一个内联表单,其中标签留给控件,这似乎不是各种表单组件的默认用法。
到目前为止,这已经达到了目的:
<Grid container spacing={0}>
<Grid item xs={12}>
<FormControlLabel
label="ID"
disabled
value="42a5936e-9856-42d4-b540-104fd79bcf36"
labelPlacement="start"
control={
<TextField fullWidth name="ID" />
}
/>
</Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)
但标签和控件之间根本没有空间。
这是它的样子
我认为padding-right必须将一些内容添加到标签中,但我不确定使用这些组件将其放在哪里。
我在我的插件和工作流中创建了以下两个抽象类:
/// <summary>
/// Base plugin class. Provides access to most often used Xrm resources.
/// </summary>
public abstract class BasePlugin : IPlugin
{
public IServiceProvider ServiceProvider { get; set; }
public ITracingService TracingService { get; set; }
public IPluginExecutionContext PluginContext { get; set; }
public IOrganizationService Service { get; set; }
public void Execute(IServiceProvider serviceProvider)
{
ServiceProvider = serviceProvider;
TracingService =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
PluginContext = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
Service = serviceFactory.CreateOrganizationService(PluginContext.UserId);
ExecutePluginLogic();
}
public virtual void ExecutePluginLogic() …Run Code Online (Sandbox Code Playgroud) 我试图根据自定义单元格渲染器中的各种条件显示或隐藏按钮。
这是我的渲染器的模板:
<div class="btn-toolbar" style="justify-content: flex-start; display: flex;">
<button (click)="editStage()" type="button" class="btn-xs btn btn-primary btn-default btn-space"><span class="fas fa-edit"></span></button>
<button (click)="gotoSteps()" type="button" class="btn-xs btn btn-primary btn-default btn-space"><span class="fas fa-code-branch"></span></button>
<button *ngIf="stage.order > 0 && nbrStages > 1" (click)="moveUp()" type="button" class="btn-xs btn btn-primary btn-default btn-space"><span class="fas fa-arrow-up"></span></button>
<button *ngIf="orderPlusOne < nbrStages && nbrStages > 1" (click)="moveDown()" type="button" class="btn-xs btn btn-primary btn-default btn-space"><span class="fas fa-arrow-down"></span></button>
<button (click)="deleteStage()" type="button" class="btn-xs btn btn-primary btn-default btn-space"><span class="fa fa-trash-alt"></span></button>
</div>
Run Code Online (Sandbox Code Playgroud)
这是组件代码
@Component({
selector: 'app-workflow-stage-buttons',
templateUrl: './workflow-stage-buttons.component.html',
styleUrls: …Run Code Online (Sandbox Code Playgroud) 我正在考虑整理这一点,但我对C#有点新意
ResponseList responsesList = new ResponseList();
PagedResponseList pagedResponsesList = new PagedResponseList();
responsesList = responseService.ListSurveyResponses(1000);
pagedResponsesList = responsesList.ResultData;
Run Code Online (Sandbox Code Playgroud)
这可能是一个简单的方法,但是这个单行所需的语法让我感到安慰.
我正在尝试使用 SDK v3CosmosClient而不是旧的DocumentClient.
这样做的原因是它似乎DocumentClient不能很好地转换包含空间函数的 LINQ 查询(即:使用时,Within()我会从 DocumentClient 收到一个错误,说明未实现这些方法)。
分页适用DocumentClient.CreateDocumentQuery<T>于以下情况:
var query = DocumentClient.CreateDocumentQuery<T>(UriFactory.CreateDocumentCollectionUri("master", "features"), feedOptions)
.Where(t => t.Type == typeof(T).Name)
.Where(pred)
.AsDocumentQuery();
string queryContinuationToken = null;
var page = await query.ExecuteNextAsync<T>();
if (query.HasMoreResults)
queryContinuationToken = page.ResponseContinuation;
Run Code Online (Sandbox Code Playgroud)
我不知道在哪里收集使用CosmosClient及其Container类的延续令牌:
QueryRequestOptions options = new QueryRequestOptions();
options.MaxItemCount = maxRecords;
FeedIterator<T> feed;
if (continuationToken == "")
feed = Container.GetItemLinqQueryable<T>(true, null, options).Where(x => x.Type == typeof(T).Name).Where(pred).ToFeedIterator();
else
feed = Container.GetItemLinqQueryable<T>(true, continuationToken, options).Where(x …Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×4
ag-grid ×1
angular ×1
angular9 ×1
asp.net-mvc ×1
deadlock ×1
javascript ×1
jquery ×1
material-ui ×1
odata ×1
reactjs ×1
service ×1
windows ×1