何时应该使用CMS中的字段以及何时使用类属性和数据库字段?
我的情景: 使用字段用法(文本)和价格(双精度)创建产品内容部分。然后我创建了一个contenttype产品并添加了部分。
我也可以在模型中创建产品记录并添加产品表。还有司机等的一部分 乍一看,除了需要编程的选项2之外,我看不出其他区别。
但是我遇到了一个问题: 在选项2中,我可以使用存储库并以编程方式创建大量项目。 在选项1中,我可以创建产品内容项但无法填写产品部分的字段(没有错误,但字段仍为空)
那么何时使用选项1和选项2? 选项1的问题与该选项有关吗?
编辑:选项1的问题澄清
我创建了一个productpart。对于productpart,我添加了一个十进制的字段价格,我添加了一个产品用法产品,它是一个文本字段。
在代码中我有以下内容:
dynamic item = _cm.New("Product");
item.TitlePart.Title = "Mijn dummy product";
item.BodyPart.Text = "Some dummy text for this product";
item.ProductPart.Price.Value = new decimal(20.5);
item.ProductPart.Usage.Value = "Some dummy usage of this product";
_cm.Create(item);
运行代码后,使用正确的标题和正文创建产品,但使用和价格出现了emtpy。 我也尝试了这个项目。作为<>方法。但是由于我没有使用该名称创建对象,因此无法编译为As。
答案 0 :(得分:0)
不同之处在于,只能使用投影查询字段,但更常见的是部分和字段用于不同的用法:部分是可重用的,而不是字段。例如,价格将成为任何产品的特征,因此它应该是一部分财产。用法,我不知道,这听起来与你正在做的事情相当具体,可能会更好地作为一个领域。
关于选项1的问题,如果没有看到你的代码就很难说,但是你做错了很可能。
答案 1 :(得分:0)
显然,在访问contentpart和字段之前,必须先创建项目。至少它对我有用。
请验证我的分析是否正确。如果是这样,我会将它标记为答案,以及Bertrand的答案。
现在代码如下:
var item = _cm.New("Product");
item.As<TitlePart>().Title = "Mijn dummy product";
item.As<BodyPart>().Text = "Some dummy text for this product";
//Create first before accessing the contentparts that are dynamic.
_cm.Create(item);
//And then access the product via dynamic object.
dynamic dyn = item;
item.ProductPart.Price.Value = new decimal(20.5);
item.ProductPart.Usage.Value = "Some dummy usage of this product";