小编All*_*lan的帖子

实体框架 6.1.1 索引的命名约定

我了解如何将约定添加到代码优先(通过迁移)项目。我已经成功地执行了表名称,甚至将 GUID Id 字段更改为非聚集。

但我还没有找到如何在未给出名称时更改 EF 提供的默认索引名称。

[Index(IsUnique = true)]
public string Code { get; set; }

[Index]
public string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)

我有这两个要求。顶部索引应命名为UX_[schema]_[table]_Code,第二个索引应命名为IX_[schema]_[table]_Description

我还需要支持多列索引,其中 IsUnique 仍然是 UX,但列部分是所有列的驼峰式组合(例如, UX_[schema]_[table]_CodeDescription如果上面的两列位于同一索引中)。

我假设我需要在 IndexAttributeConvention 之后添加它,以便所有当前功能都可以工作并创建 IndexAnnotations。但如果属性(或 Fluent 构造)中留空,我无法找到索引在哪里接收其初始名称。

提前致谢。

entity-framework naming-conventions ef-code-first entity-framework-6.1

6
推荐指数
1
解决办法
793
查看次数

客户端Win8.1通用应用程序上的OData Expand失败

只是一个简单的问题,Win 8.1通用类库中不支持这个吗?或者如果它是,任何人都可以帮助我做错了什么.

http://jbsapplication.azurewebsites.net/Modules?$filter=Name%20eq%20'JBS%20Electronic%20forms'&$expand=Menus
Run Code Online (Sandbox Code Playgroud)

当我从浏览器或Fiddler执行此操作时,我收到正确的响应.

我在客户端视图模型类中的代码如下(使用OData Client v2代码生成的对象)

var application = new UriBuilder(ServiceBaseAddress);
var context = new Models.Application(application.Uri);

var modulesQuery = context.Modules.Expand(m=>m.Menus).Where(m => m.Name == ApplicationName);
var modules = await ((DataServiceQuery<Module>) modulesQuery).ExecuteAsync();
_currentModule = modules.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

在最后一行生成以下异常

Microsoft.OData.Core.DLL中出现"Microsoft.OData.Core.ODataException"类型的第一次机会异常

附加信息:当写一个JSON响应,用户模型必须被指定和设置实体和实体类型必须被传递到ODataMessageWriter.CreateODataEntryWriter方法或ODataFeedAndEntrySerializationInfo必须对正在writen的ODataEntry或ODataFeed来设置.

如果我删除了请求的Expand部分,一切都很好,但我需要再执行一次往返获取菜单.

Module类的减少参考:

[Key("Id")]
public class Module: BindableBase
{
    public string Name
    {
        get { return _name; }
        set { SetProperty(ref _name, value); }
    }

    DataServiceCollection<Menu> _menus = new DataServiceCollection<Menu>(null,TrackingMode.AutoChangeTracking);

    public DataServiceCollection<Menu> Menus
    {
        get { return _menus; }
        set
        {
            _menus = value; …
Run Code Online (Sandbox Code Playgroud)

c# odata win-universal-app

5
推荐指数
1
解决办法
1238
查看次数