【发布时间】:2017-08-30 16:25:26
【问题描述】:
我正在创建一个 Web API 来显示我们系统中的忠诚度计划列表。每个忠诚度计划都有一个超长的 GUID,我想把它变成一个简单的唯一 ID。
API 的目的是用一个 ID 显示每个项目,然后最终用户可以使用相同的命令和该 ID 号来获取有关忠诚度计划的更多信息。
在 SQL 中,我会使用 Rank Over 之类的东西,但我不确定如何在此处应用它。
var ReturnedLoyalty = from d in db.LoyaltyCampaigns
where d.CampaignStart < DateTime.Now && d.CampaignStop >= DateTime.Now
orderby d.CampaignName ascending
select new { d.CampaignGUID, d.CampaignName };
我想将 d.campaignguid 替换为一组简单的数字,例如 1、2、3... 等。
【问题讨论】:
-
您可以使用
.Select((value, index)=>...})(linq to objects)来实现这一点……但如果你想要一个基于整数的 ID……添加一个基于整数的 ID。否则数字会随着时间的推移而变化,这会让人们感到困惑。 -
SQL 表是由第三方软件供应商创建的。他们的软件在幕后使用 GUID 列,并将其设置为表格上的 indentity 列。所以我无法在 SQL 表上创建新的身份。
-
即使您必须使用触发器或其他事件维护 ID,我仍然猜想您添加一列,就好像删除、添加或重命名了任何内容一样,这些数字会发生变化。
标签: entity-framework linq asp.net-web-api2