Добавление ключа объекта, когда ключ не выводится из представления - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть представление базы данных, которое объединяет несколько таблиц в SQL Server 2005. Это выглядит примерно так:

SELECT     
   m1.MenuName AS menu_name, m2.MenuName AS sub_menu_name, p.ProductName, od.amount
FROM         
   dbo.tblMenus AS m1 
FULL OUTER JOIN
   dbo.tblMenus AS m2 
FULL OUTER JOIN
   dbo.tblProductsRelMenus AS pm ON m2.Id = pm.SubMenuId ON m1.Id = pm.MenuId 
FULL OUTER JOIN
   (SELECT     
       dbo.tblOrderDetails.ProductId, SUM(dbo.tblOrderDetails.Ammount) AS amount
    FROM          
       dbo.tblOrderDetails 
    FULL OUTER JOIN
       dbo.tblOrders AS o ON dbo.tblOrderDetails.OrderId = o.OrderId
    WHERE (o.OrderDestroyed = 0)
    GROUP BY dbo.tblOrderDetails.ProductId) AS od 
RIGHT OUTER JOIN
   dbo.tblProducts AS p ON od.ProductId = p.ProductId ON pm.ProductId = p.ProductId

Когда я пытаюсь создать модель данных объекта ADO .Net, она жалуется нане имеющий первичного ключа в разделе SSDL.Затем я нашел это:

http://msdn.microsoft.com/en-us/library/dd163156.aspx

, но я не понимаю часть об определяющем запросе.Конечно, я просто хочу столбец с уникальными номерами, чтобы определить ключ, или?

  <EntityType Name="SoldItemsView">
    <Key>
       <PropertyRef Name="SoldItemsViewId" />
    </Key>
    <Property Name="SoldItemsView" Type="int" Nullable="false" />
    <Property Name="menu_name" Type="nvarchar" MaxLength="100" />
    <Property Name="sub_menu_name" Type="nvarchar" MaxLength="100" />
    <Property Name="ProductName" Type="nvarchar" MaxLength="50" />
    <Property Name="amount" Type="int" />
  </EntityType>

Но как мне заполнить этот столбец уникальными числами?

Спасибо,

Барри

1 Ответ

0 голосов
/ 12 декабря 2011

Вы можете использовать только столбцы из вида.Чтобы определить ключ сущности, вы должны выбрать столбец (или набор столбцов) в своем представлении, который однозначно идентифицирует запись из представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...