我们使用的第三方生成的代理将BLOB数据类型公开为byte [],然后我们通过代码生成公开此值,如下所示:
public byte[] FileRawData
{
get { return internalDataRow.FileRawData; }
set { this.internalDataRow.FileRawData = value; }
}
Run Code Online (Sandbox Code Playgroud)
然后,通过我们的应用程序(可能在不同的程序集中)使用此属性.根据FxCop规则,属性不应该暴露数组.那么,这里更好(或最好)的方法是什么?别人在这种情况下做了什么?
ICollection<T>或IList<T>实现)选项3总是可行的,但如果我们应该以不同的方式做事,那么我宁愿这样做.
我们正在使用 .NET Core、EF Core 和 Postgres 启动一个新应用程序 - 我们真的很喜欢这些迁移:-)
但是,我发现了一个我不知道如何解决的问题。在我们的一些迁移中,我们使用DbContext来加载记录、运行一些业务逻辑并重新保存记录。我们也在database.Context.Migrate()Web 服务器启动时运行,因此它始终运行。
这一切都运行良好(到目前为止)。
不幸的是,它一直有效,直到模型稍后更改为止。考虑以下迁移顺序:
创建Customer、Order、 和OrderLine模型。添加架构迁移以加载结构
业务规则发生变化,所以我们需要Order根据一些业务逻辑在记录上设置一个值。我们创建一个数据迁移,在其中加载DbContext、运行代码并运行SaveChangesAsync()
至此,一切都很好。
我们需要向记录添加带有新字段的架构迁移Customer。
在这里,事情破裂了。如果数据库尚未应用迁移 2,则该Migrate()命令会在应用迁移 2 时出错,EF 正在尝试生成包含 3 中的新字段的 select 语句。
但我不确定问题实际上出在这个过程中:我们不应该DbContext在迁移中使用(和手动编写 SQL 语句)吗?我们是否应该明确地对读取的每条记录进行预测,以便我们确切地知道我们在做什么?
还有别的事吗?
我正在尝试使用 Forms Recognizer 预览,经过多次反复试验,我终于通过 SAS URL 读取了文档。但是,即使使用快速入门 [1] 中提供的示例文档,我也会得到以下响应:
{
"modelId": "d7ba79e3-38bc-4913-bb11-82656cb08adc",
"trainingDocuments": [
{
"documentName": "Invoice_1.pdf",
"pages": 1,
"errors": [
"Page 1: Document is either invalid or exceeds the page/size limits."
],
"status": "failure"
},
{
"documentName": "Invoice_2.pdf",
"pages": 1,
"errors": [
"Page 1: Document is either invalid or exceeds the page/size limits."
],
"status": "failure"
},
{
"documentName": "Invoice_3.pdf",
"pages": 1,
"errors": [
"Page 1: Document is either invalid or exceeds the page/size limits."
],
"status": "failure"
}, …Run Code Online (Sandbox Code Playgroud)