数据库体系结构问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (7)

我有一个SQL数据库,一旦构建,我将通过LINQ与之交互。它有一个客户端(忽略其他人)两个表的两个fkID字段。

类 国家

我想要做的是存储“规则”表,其中发生以下情况:

if the Class is 'A' and the Country is 'USA' then 
    create rows  'RowsA' in table todo

else if the class is 'A' and the country is not 'USA' then
    create rows 'RowsB'  in table todo

else
    create rows 'RowsC' in table todo

因此,这是在规则表中执行此操作的最佳方法

RuleID Identity ClassFK Int null CountryFK Int null order int not null

并让我的C#代码执行以下操作:

var rules = from r in db.Rules
            orderby r.order
            select r;

foreach(rule in rules)
{
     if (((client.ClassFK == rule.ClassFK) || (rule.ClassFK == null)) &&             
           ((client.CountryFK== rule.CountryFK) || (rule.CountryFK== null)))
     {
          // Create The Rows
     }
}

这对我来说似乎非常脆弱

提问于
用户回答回答于

一种让它看起来更干净的方法我认为是在Rule类上创建一个方法来检查它是否适用于客户端; 这使您的代码看起来像:

foreach(rule in rules.Where(r => r.AppliesTo(client)))
{
    // Create the Rows
}

但是,我看到缺少的部分是根据特定规则知道要创建的行; 这不包含在您的规则表中。

扫码关注云+社区

领取腾讯云代金券