Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理ASP.NET(核心)应用程序和Azure表中的只读值_Asp.net_Asp.net Mvc_Asp.net Core_Mapping_Azure Table Storage - Fatal编程技术网

处理ASP.NET(核心)应用程序和Azure表中的只读值

处理ASP.NET(核心)应用程序和Azure表中的只读值,asp.net,asp.net-mvc,asp.net-core,mapping,azure-table-storage,Asp.net,Asp.net Mvc,Asp.net Core,Mapping,Azure Table Storage,我有一个这样的物体: class Record { public DateTime Created { get; set; } // ? To SET or not to SET ? public string Name { get; set; } public Record() : this (DateTime.Now) { } public Record(DateTime created) { this.Created = created; } } 我的

我有一个这样的物体:

class Record 
{
    public DateTime Created { get; set; } // ? To SET or not to SET ?
    public string Name { get; set; }

    public Record() : this (DateTime.Now) { }
    public Record(DateTime created) { this.Created = created; }
}
我的问题是,我不知道如何将创建的
成员作为只读
get公开或设置了

该成员在创建(由构造函数创建)时只设置一次,然后应仅以只读方式查看

在编辑视图中,我对该字段有问题,因为如果我将它们公开为可写(使用
设置
)输入,它会尝试将其更新回来,或者说它的格式错误;另一方面,如果是只读的,则无法从数据库正确加载(在我的情况下是azure表)

以下是从“数据库”(azure表)恢复记录的函数:

公共异步任务GetTableEntitiesAsync(字符串分区),其中T:ITableEntity,new() { TableQuery recordsQuery=新建TableQuery()。其中( TableQuery.GenerateFilterCondition(“PartitionKey”,QueryComparisons.Equal,partition)); List myList=新列表(); var items=wait this.GetTable().ExecuteQuerySegmentedAsync(recordsQuery,null); myList=items.ToList(); return myList;//创建只读所有记录时==DateTime.Now }
您可以使用两种型号:

  • 用于向数据库存储数据或从数据库检索数据的简单DTO类

    class DBRecord 
    {
       public DateTime Created { get; set; }
       public string Name { get; set; }
    }
    
  • 具有特定逻辑(如时间处理)的业务模型

    class Record 
    {
       public DateTime Created { get; private set; }
       public string Name { get; set; }
    
       public Record() { this.Created = DateTime.Now;}
    
       public Record(DBRecord dbRecord) 
       { 
            this.Name = dbRecord.Name;
            this.Created = dbRecord.Created; 
       }
    }
    

  • 如果我理解正确,我们可以在视图中使用我们的逻辑。请尝试使用以下逻辑执行此操作:

    如果尝试将记录添加到表中,则视图中没有已创建的项。 如果我们试图编辑记录,我们可以将创建的项设置为禁用,这意味着我们无法在视图中编辑创建的项

    public class Record:TableEntity
        {
    
            public DateTime CreatedTime { get; set; }
    
            public string Name { get; set; }
    
            public Record(string pk,string rk,string createDateTime = null)
            {
                PartitionKey = pk;
                RowKey = rk;
                CreatedTime = !string.IsNullOrEmpty(createDateTime) ? DateTime.Parse(createDateTime) : DateTime.Now;
            }
    
    
        }
    

    不幸的是,第二个将无法工作,因为我通过TableQuery获取对象,因此属性将自动填充。。。我不知道他们使用什么构造函数,可能是无参数的。。。所以它创建了一个名为“Now”的
    public class Record:TableEntity
        {
    
            public DateTime CreatedTime { get; set; }
    
            public string Name { get; set; }
    
            public Record(string pk,string rk,string createDateTime = null)
            {
                PartitionKey = pk;
                RowKey = rk;
                CreatedTime = !string.IsNullOrEmpty(createDateTime) ? DateTime.Parse(createDateTime) : DateTime.Now;
            }
    
    
        }