【问题标题】:How to use POCO with Domain Service Class Dialog?如何将 POCO 与域服务类对话框一起使用?
【发布时间】:2011-05-20 17:06:00
【问题描述】:

我希望域服务类显示我的实体,以便我可以让它为我生成 CRUD。为什么什么都没有显示?

项目结构:

EF 模型位于类库中,并且 POCO (.tt) 位于另一个类库中

目前我已经手动创建了 CRUD 操作,但我希望对话框来创建它们。

@Akash Kava:这是其中一个 pocos 的主键:

    [DataMember]
    public int CVAdvancementQuotientId
    {
        get { return _cVAdvancementQuotientId; }
        set
        {
            if (_cVAdvancementQuotientId != value)
            {
                if (ChangeTracker.ChangeTrackingEnabled && ChangeTracker.State != ObjectState.Added)
                {
                    throw new InvalidOperationException("The property 'CVAdvancementQuotientId' is part of the object's key and cannot be changed. Changes to key properties can only be made when the object is not being tracked or is in the Added state.");
                }
                _cVAdvancementQuotientId = value;
                OnPropertyChanged("CVAdvancementQuotientId");
            }
        }
    }
    private int _cVAdvancementQuotientId;

【问题讨论】:

  • 您的 POCO 实体是否在主键上包含“Key”属性?域服务类仅适用于具有“Key”和 IQueryable 的类
  • 我使用 T4 自跟踪实体模板从我的 EF4 模型生成 POCO。 [Key] 数据注释(我假设您指的是)未放置在 POCO 上。
  • 尝试修改您的 tt 文件以包含主键的 Key 属性
  • 同样的问题,它们仍然没有显示(是的,我确实在尝试再次打开对话框之前重建了项目)。
  • 你的上下文是从 ObjectContext 派生的,它有 ObjectSet 公共属性吗?

标签: wcf entity-framework poco wcf-ria-services


【解决方案1】:
  • 您是否更改了 tt 文件的 Custom Tool Namespace
    此外,您必须编辑 .tt 文件并将行:string inputFile = @"$edmxInputFile$” 更改为例如string inputFile = @"../DAL/Northwind.edmx";
  • 有一个已报告的错误现已修复,您可以在this 地址找到更多信息。
  • 您必须安装 WCF RIA 服务工具包。你可以找到它here

【讨论】:

  • 是的,我已经在同一个解决方案的另一个项目中使用了 POCO 和 EF。
【解决方案2】:

^^ 将您的代码 CodeGenerationStrategy 设为默认而不是无 > 从您的 EF 模型中删除 .tt 文件 >> 重建 >> 实体将显示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2017-11-17
    • 2021-10-19
    相关资源
    最近更新 更多