相关疑难解决方法(0)

实体框架和SQL Server视图

由于几个我无权谈论的原因,我们在Sql Server 2005数据库中定义了一个视图,如下所示:

CREATE VIEW [dbo].[MeterProvingStatisticsPoint]
AS
SELECT
    CAST(0 AS BIGINT) AS 'RowNumber',
    CAST(0 AS BIGINT) AS 'ProverTicketId',
    CAST(0 AS INT) AS 'ReportNumber',
    GETDATE() AS 'CompletedDateTime',
    CAST(1.1 AS float) AS 'MeterFactor',
    CAST(1.1 AS float) AS 'Density',
    CAST(1.1 AS float) AS 'FlowRate',
    CAST(1.1 AS float) AS 'Average',
    CAST(1.1 AS float) AS 'StandardDeviation',
    CAST(1.1 AS float) AS 'MeanPlus2XStandardDeviation',
    CAST(1.1 AS float) AS 'MeanMinus2XStandardDeviation'
WHERE 0 = 1
Run Code Online (Sandbox Code Playgroud)

我们的想法是,实体框架将基于此查询创建一个实体,但它会生成一个包含以下内容的错误:

警告6002:表/视图'Keystone_Local.dbo.MeterProvingStatisticsPoint'没有定义主键.已推断密钥,并将定义创建为只读表/视图.

并且它决定CompletedDateTime字段将是此实体主键.

我们正在使用EdmGen生成模型.有没有办法不让实体框架包含此视图的任何字段作为主键?

entity-framework sql-server-2005 primary-key .net-3.5 sql-view

131
推荐指数
5
解决办法
10万
查看次数

无法将视图添加到edmx

尝试将视图添加到edmx文件时,没有任何反应.
我使用wxl编辑器打开了edmx文件,我注意到以下错误:

警告6013:表/视图'CellularOrders.dbo.V_LINK'没有定义主键,也没有推断出有效的主键.此表/视图已被排除.要使用该实体,您需要检查您的架构,添加正确的密钥并取消注释.

(重要的东西 - 我没有也不需要将基于视图的表添加到edmx.此外,该视图仅用于对数据执行select语句)

因此,在数据库中,我更新了T_LINK表,并将其中一个反映在视图上的字段作为主键.然后,当我再次尝试将视图添加到edmx时,再也没有发生.

我怎么解决这个?是否可以选择在不对表做任何事情的情况下解决这个问题?我可以添加另一个视图,以某种方式包装旧视图但具有固定属性?

.net c# entity-framework

26
推荐指数
2
解决办法
4万
查看次数

使用没有主键的视图与实体

我刚刚开始将一个应用程序从原始ADO.NET和嵌入式SQL转换为Entity.我遇到了应用程序使用的其中一个视图的问题.视图没有主键,也没有唯一标识行的列(或列组合).这是选择创建视图:

SELECT
    filingmonth,
    CEIL(filingmonth / 3),
    licnum,
    filingyear,
    DECODE(GROUPING(insurername), '1', '- All Insured -', insurername),
    insurername,
    policylinecode,
    linedescription,
    SUM(NVL(grosspremium, 0)),
    SUM(DECODE(taxexempt, 1, grosspremium, 0)),
    TRUNC(
      CASE
        WHEN
          (
            b.rsn IS NOT NULL
            OR A.zeroreport = 1
          )
          AND b.datereceived IS NULL
            THEN A.datereceived
        ELSE b.datereceived
      END),
    SUM(aip.iscompanyadmitted(b.naiccocode, b.naicalienid)),
    A.insuredid
  FROM
    aip.slbtransinsured A
  LEFT OUTER JOIN aip.slbtransinsurer b
  ON
    A.insuredid = b.insuredid
  LEFT OUTER JOIN aip.slblinecodes C
  ON
    b.policylinecode = C.linecode
  WHERE
    A.submitted = 1
  AND A.entryincomplete = 0
  GROUP BY …
Run Code Online (Sandbox Code Playgroud)

sql oracle entity

22
推荐指数
2
解决办法
4万
查看次数

什么是抑制EF警告的正确方法?

我想抑制这些警告,但我无法弄清楚如何做到这一点.

压制

msbuild entity-framework visual-studio-2013

11
推荐指数
2
解决办法
2507
查看次数

警告错误6002:表/视图没有定义主键

这个主题在这里多次,但没有答案给我选择如何在EF中避免这个问题.

我的警告:

警告错误6002:表/视图'ADContainersWithEnvironmentsView'没有定义主键.已推断密钥,并将定义创建为只读表/视图.

基本上我在我的项目中使用数据库第一种方法.

我有看法:

CREATE VIEW [dbo].ADContainersWithEnvironmentsView
AS
WITH ADContainerWithEnvironments(Id, LinkedEnvironmentId)
AS
(
    SELECT adc.Id, adc.LinkedEnvironmentId
    FROM ADContainer AS adc
    WHERE ParentAdContainerId IS NULL

    UNION ALL

    SELECT subAdc.Id, parentAdc.LinkedEnvironmentId
    FROM ADContainer AS subAdc
    INNER JOIN ADContainerWithEnvironments parentAdc
    ON subAdc.ParentAdContainerId = parentAdc.ID
)
SELECT ISNULL(Id,-1) AS Id, LinkedEnvironmentId FROM ADContainerWithEnvironments
Run Code Online (Sandbox Code Playgroud)

正如其他主题中的解释一样,我需要在ISNULL(Id,-1)AS Id的视图中指定PK

我还在Diagram中标记我的Id作为Entity Key检查我的截图 在此输入图像描述

我对所有10个观点都有这个警告.我的更改后,我关闭我的视觉工作室,甚至重新启动电脑,或在其他电脑上尝试:)但警告仍然存在.

感谢帮助.

sql t-sql entity-framework entity-framework-4

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