首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在.net核心中创建一个带有两个外部id键的模型类和控制器

在.NET Core中创建一个带有两个外部ID键的模型类和控制器,可以按照以下步骤进行:

  1. 创建模型类:
代码语言:txt
复制
public class MyModel
{
    public int Id { get; set; }
    public int ExternalId1 { get; set; }
    public int ExternalId2 { get; set; }
    // 其他属性
}
  1. 创建控制器:
代码语言:txt
复制
[Route("api/[controller]")]
[ApiController]
public class MyModelsController : ControllerBase
{
    private readonly MyDbContext _context;

    public MyModelsController(MyDbContext context)
    {
        _context = context;
    }

    // GET: api/MyModels
    [HttpGet]
    public async Task<ActionResult<IEnumerable<MyModel>>> GetMyModels()
    {
        return await _context.MyModels.ToListAsync();
    }

    // GET: api/MyModels/5
    [HttpGet("{id}")]
    public async Task<ActionResult<MyModel>> GetMyModel(int id)
    {
        var myModel = await _context.MyModels.FindAsync(id);

        if (myModel == null)
        {
            return NotFound();
        }

        return myModel;
    }

    // POST: api/MyModels
    [HttpPost]
    public async Task<ActionResult<MyModel>> PostMyModel(MyModel myModel)
    {
        _context.MyModels.Add(myModel);
        await _context.SaveChangesAsync();

        return CreatedAtAction("GetMyModel", new { id = myModel.Id }, myModel);
    }

    // PUT: api/MyModels/5
    [HttpPut("{id}")]
    public async Task<IActionResult> PutMyModel(int id, MyModel myModel)
    {
        if (id != myModel.Id)
        {
            return BadRequest();
        }

        _context.Entry(myModel).State = EntityState.Modified;

        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!MyModelExists(id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return NoContent();
    }

    // DELETE: api/MyModels/5
    [HttpDelete("{id}")]
    public async Task<IActionResult> DeleteMyModel(int id)
    {
        var myModel = await _context.MyModels.FindAsync(id);
        if (myModel == null)
        {
            return NotFound();
        }

        _context.MyModels.Remove(myModel);
        await _context.SaveChangesAsync();

        return NoContent();
    }

    private bool MyModelExists(int id)
    {
        return _context.MyModels.Any(e => e.Id == id);
    }
}

请注意,上述代码中的MyDbContext是指代你的数据库上下文类,你需要根据自己的数据库设置进行相应的更改。

这是一个简单的示例,你可以根据自己的需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC5高级编程——(3)MVC模式模型

解释:每个Album中都有ArtistArtistID两个属性,所以对于一个专辑Album,可以通过点操作符来找到与之相关艺术家(Album.Artist),称Artist属性为导航属性(navigation...此处有个使用vs小技巧,创建model属性时候,可以键入prop,然后按tab两次,可快速创建属性哦! ? 构建完之后,需要对整个项目进行编译。...(3)“添加控制器”对话框中,选择模型、数据上下文类,修改控制器名称。 模型选择Album,我们刚才创建模型,基架基于此类,会创建相应控制器视图。...可以根据这两个名称来辨别每个所代表策略。两个初始化器都需要一个泛型类型参数,并且这个参数必须是DbContext派生。...复杂模型绑定:ASP.NET MVC中,可以通过DefaultModelBinder将form数据对应到复杂.NET,即模型。该模型可能是一个List一个含有多个属性自定义

4.8K40

Asp.Net Web API 2第七课——Web API异常处理

默认情况下,大多数异常都被转换为一个带有状态码500内部服务器错误HTTP响应。 这个HTTPResponseException类型是一个特殊类型。...特别强调一下,Asp.Net MVC中使用HandleErrorAttribute不会处理Web API控制器中抛出异常。...“ASP.NET MVC 4 Web应用程序”项目模板创建项目,要把你Web API配置代码被放在WebApiConfig中,它位于App_Start文件夹: public static class...使用HttpError一个好处是,与其它强类型模型一样,会进行同样“content-negotiation”(暂未实现)序列化过程。...Adding Custom Key-Values to HttpError把自定义键值添加到HTTPError HttpError实际上是一个-值”集合(它派生于Dictionary<string

88830
  • Asp.Net Web API(四)

    默认情况下,大多数异常都会转换为一个带有状态码500内部服务器错误HTTP响应。 这个HTTPResponseException类型是一个特殊类型。...注意:ASP.NET Web API中异常过滤器与ASP.NET MVC中是及其相似的。然后,它们被声明不用命名空间下,且功能也是独立。...使用HttpError一个好处是,与其它强类型模型一样,会进行同样“content-negotiation”(暂未实现)序列过程   直接替代创建HttpError对象一种方法是:你可以使用CreateErrorResponse...); 8 } CreateErrorResponseSystem.Net.Http.HttpRequsetMessageExtensions中被定义一个扩展方法。...to HttpError 把自定义键值添加到HttpError   HttpError实际上是个--值集合,(派生与于Dictionary),因此你可以添加自己

    1.6K20

    【整理】Spring Rest接口开发专题

    1.3.3 请求结果对象VO         为了建立一个问候模型,我们创建一个代表资源,提供一个包含两个字段、一个构造方法、还有对id、content访问方法简单而古老Java对象。...1.3.4 创建一个请求控制器         接下来我们将会创建一个资源控制器,这个资源控制器将负责处理客户端向服务器发送问候请求。         ...创建一个资源控制器         Spring创建rest接口web服务中,http请求是被控制器处理。...传统Spring MVC控制器Spring rest接口web服务中控制器有个关键不同,Spring rest接口中,响应内容是控制器创建(控制器创建并返回Greeting就是响应内容...1.3.5 使这个应用可执行化         尽管可以把这个服务打包为一个传统war文件来部署到一个外部应用服务器上。下面创建一个孤立应用,可以相对简单来演示。

    13830

    Asp.Net Web API 2第十五课——Model Validation(模型验证)

    假设客户端发送了一个带有下列JSON表示POST请求: { "Id":4, "Price":2.99, "Weight":5 } 你可以看出,客户端并未包含被标记成requiredName属性。...应用程序其它层面可能会需要附加验证(例如,数据层可能会强制外约束)。 {"Id":4, "Name":"Gizmo"} 此处,客户端并未指定Price或Weight值。...此时模型状态是有效,因为零是这些属性有效值。这是否是一个问题取决于你所处场景。例如,一个更新操作中,你可能希望区分出“零”与“未设置”。...这取决于控制器动作对模型状态及响应进行适当检查。 你也可以创建一个动作过滤器,以便在控制器动作被调用之前,检查模型状态。...HttpErrorRC版(指Web API预览版)中无效。 你可以将此过滤器全局性地运用于所有Web API控制器

    72020

    Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)

    OData还定义了一个方法来公开元数据有关数据。客户端可以使用元数据来发现类型信息关系数据集。ASP.NET Web API OData可以很容易创建OData终结点数据集。...选择合适模版进行创建项目 并命名为OData,点击确认后,在下一个Asp.Net 项目对话框中选择 Empty空模版,并在以下对象添加文件夹核心引用下:进行勾选Web  API。...客户端可以通过ID来查询产品。此字段也是后台数据库中表主键,之后进行生成项目的步骤。 添加一个OData控制器  控制器就是一个处理HTTP请求。...OData服务中你为每个实体数据集定义一个独立控制器本教程中我们将创建一个单一控制器解决方案资源管理器中,右键单击控制器文件夹。选择添加,然后选择控制器....如果你想更多来控制EDM,使用ODataModelBuilder明确添加属性、、导航属性来创建EDM。 这个EntitySet 方法就是将一个实体添加到EDM实体中。

    97431

    ICLR 2018 | 彩云科技提出结合组合子抽象神经编程器-解释器,提升通用性可学习性

    id=rJlMAAeC- 摘要:为了克服神经编程器-解释器(NPI)通用性可学习性方面的局限,本文提出在神经编程中引入组合子抽象(combinator abstraction)方法,并为此提出了 NPI...NPI 模型包含三个具有学习能力组件:一个与任务无关核心控制器一个程序存储器,以及让 NPI 适用于多种环境多个特定域编码器。...通过对比嵌入向量 k_t+1 与存储器 M_key 中每一行,可得到下一个程序 ID。于是,从存储了 N 个程序程序存储器 M_prog 中可以获取下一个程序嵌入向量: ?...以上描述 NPI 架构有两个局限。第一,由上式可知,程序存储器中保存着已学得全部 N 个程序,每个时间步上,核心控制器都要从这 N 个程序里选择一个调用。...表 6:增强学习训练 CNPI、RNPI 模型,完成简单版任务最终版任务成功率。 ? 表 7:采用两探测子、有无瞬态条件时,学习组合子 linrec(线性递归)成功率比较。

    64590

    angularjs 指令详解

    ,可以是以下类型: 一个代表外部HTML文件路径字符串; 一个可以接受两个参数函数,参数为tElementtAttrs,并返回一个外部HTML文件路径字符串。...1.当我们将scope设置为false时候,我们创建指令父作用域(其实是同一个作用域)共享同一个model模型,所以指令中修改模型数据,它会反映到父作用域模型中。 true:继承并隔离 ?...2.当我们将scope设置为true时候,我们就新创建一个作用域,只不过这个作用域是继承了我们父作用域; 我觉得可以这样理解,我们新创建作用域是一个作用域,只不过初始化时候,用了父作用域属性方法去填充我们这个新作用域...3.当我们将scope设置为{}时,意味着我们创建一个与父作用域隔离作用域,这使我们不知道外部环境情况下,就可以正常工作,不依赖外部环境。...意味着对这个值进行设置时会生成一个指向父级作用域包装函数。    要使调用带有一个参数父方法,我们需要传递一个对象,这个对象是参数名称,值是要传递给参数内容。

    2.2K40

    吹弹牛皮之低耦合程序设计

    设计模式之单一职责原则 高内聚低耦合通常是密不可分,面向对象本质是对对象抽象,又是对对象抽象结果具体表达。对于一个而言应该尽可能让你成为一个或者一对象。...这样表达上就不免A模块调用B模块方法,B模块也同样耦合着A模块。太过紧密联系会让两个模块通用性扩展性更差。其实迪米特法则很早就给出了这样解决方案。...内容如下: 这就需要我们结构设计上,每一个都应当尽量降低成员访问权限。两个或者模块之间只通过编写接口方法供其调用。这样就会使得耦合变弱更利于复用。 3....它也可以带有逻辑,在数据变化时更新控制器 2) View(视图) - 视图代表模型包含数据可视化 3) Controller(控制器) - 控制器作用于模型视图上。...它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开 MVC架构模式虽然会让功能由一个变成了三个,但对于修改拓展还是有很大方便

    53250

    《Spring实战》读书笔记-第5章 构建Spring Web应用程序

    为了理解其他两个方法,首先要理解DispatcherServlet一个Servlet监听器(也就是ContextLoaderListener)关系。...但是Spring Web应用中,通常还会有另外一个应用上下文。另外这个应用上下文是由ContextLoaderListener创建。...getRootConfigClasses()方法返回带有@Configuration注解将会用来配置ContextLoaderListener创建应用上下文中bean。...本例中,因为它是一个List,因此,将会推断为spittleList。 spittles()方法所做最后一件事是返回spittles作为视图名字,这个视图会渲染模型。...浏览器中展现一个spittle 5.4 处理表单 Spring MVC控制器也为表单处理提供了良好支持。 使用表单分为两个方面:展现表单以及处理用户通过表单提交数据。

    1.4K30

    ​Zynq 7000资源介绍

    l每个都有独立NEON,可以实现128位SIMD协处理器VFPv3。 l每个包含带有校验32KB L1指令高速缓存32KB L1数据缓存。 l双共享带有校验512KB L2高速缓存。...l每个带有私有的定时器看门狗定时器。 l系统级控制器(System-Level Control Registers,SLCRs),一组不同控制器来控制PS行为。...静态存储控制器(Static Memory Controller,SMC) SMC提供了NAND存储器并行SRAM/NOR存储器读写控制功能,对于NAND存储控制器提供8/16位IO数据位宽,提供一个片选信号...以太网控制器 lRGMI II模式时,使用MIO引脚外部PHY。 l额外接口使用PL内带有额外软PL SelectIO外部PHY。...lSGMII模式时,使用zynq-7000 PL内GTX收发器模块。 l改控制器提供可以实现分散-聚集功能DMA控制器。 1.3.3.

    1.3K10

    PCDJ DEX 3 for Mac(dj混音软件)

    外部DJ设备控制:PCDJ DEX支持使用外部DJ设备进行控制,包括MIDI控制器DJ控制器等。多种特效样式:PCDJ DEX提供了多种特效样式,可以让用户创造出自己独特音乐风格。...PCDJ DEX Mac中文版软件特色最多4个DJ平台(两个用于视频卡拉OK),配有专业级混音器播放列表各种2层4层皮肤, 带有音频视频标签支持100多个 DJ控制器自动检测到MIDI控制器到达...ASIO / CoreAudio低延迟支持视频混合(包括音高,中断,反向,刮擦视频)视频效果,视频转换视频混合录制创建文本,图像视频叠加层以屏幕上向观众显示Shader支持屏幕上节拍感知可视化时间码乙烯基.../ CD支持带有格式过滤器强大库,键入时搜索标签编辑(新增功能:“列表模式”)播放列表/浏览器中动态(实时)更改字体(按列表以获得焦点,然后按键盘上+ / - / 0)存储调用提示循环(热指示...支持Karaoke.net商店 为应用内卡拉 OK歌曲购买卡拉OK歌手轮换名单卡拉OK歌手/歌曲史填充音乐播放器(用于卡拉OK歌手之间)麦克风(带有通话),转盘或CD播放器模拟输入用于谐波/混合音高缩放关键步进器

    91020

    Spring Boot VS .NET 6

    这本文中,会对比这两个框架在以下方面有何不同: •控制器模型绑定验证•异常处理•数据访问•依赖注入•认证与授权•性能 基础项目 这是一个有关订单基础项目, 非常简单后端 api, 客户可以创建一个订单来购买一个或多个产品...这里使用框架版本分别是, Spring Boot (v2.5.5) .NET 6, 让我们开始对比吧 1.控制器 控制器是负责处理传入请求层, 为了 Spring Boot 中定义一个控制器...,我创建一个 ProductOrderController, 然后使用了 @RestController @RequestMapping 注解, 然后控制器每个方法上, 可以使用下面的注解来定义支持...id: String): ProductOrderDto = productOrderService.getById(id) } .NET Core 中, 控制器上面是相似的, 首先创建一个 ProductOrderController...(id); } 2.模型绑定验证 Spring Boot 中, 我们只需要给控制器方法参数加上下面的注解 •@RequestParam → 从查询字符串绑定•@RequestBody → 从请求体绑定

    1.5K20

    Entity Framework Core 2.0 新特性

    select p; 值得注意是: 在生成SQL时,该方法名称将用作函数名称(本例中为用户定义函数),但在方法注册期间可以覆盖名称模式 目前只支持标量功能 必须自行在数据库中创建映射函数...,EF Core迁移不会对其进行创建 2.性能提升方面 2.1DbContext连接池 ASP.NET Core程序中我们使用EF Core一般都是将自定义DbContext类型注册到依赖注入系统中,...这意味着为每个请求创建一个DbContext实例。 所以版本2.0中,我们引入了一种依赖注入中注册自定义DbContext类型新方式,它透明地引入了一个可重用DbContext实例池。...EF2.0,我们增加了对插值字符串中特殊支持,我们接受原始SQL字符串两个主要API:FromSqlExecuteSqlCommand。..., "a%"); select c; 值得注意是,Like方法带有内存中实现,当对内存中数据进行查询时,或者客户端需要发生相关内存查询时,可以方便很多.

    3.9K90

    10_异常与中断

    FIQIRQ都是发给处理器物理信号,并且触发时处理器FIQIRQ处于打开状态,它将处理相应异常。几乎在所有系统上,通过使用中断控制器连接各种中断源。...ARMv7体系结构不需要外部中止类型是同步。例如,一个特定实现上,页表翻译时报告外部异常中止被认为是精确,但这并不是所有处理器都需要。...,而无需就中断数量或类型或用于与中断控制器模块接口软件模型达成协议。...10.5.1 外部中断请求 ​ ARM如何具有两个外部中断请求FIQIRQ。这两个都是对电平触发,对低电平有效。...系统中每个CPU核心都有一个单独CPU接口。 ​ 中断软件中由一个称为中断ID数字标识。中断ID唯一对应于一个中断源。软件可以使用中断ID来识别中断源并调用相应处理程序来处理中断。

    1.4K10

    ASP.NET MVC5高级编程——(4)表单HTML辅助方法

    设置元素class特性就要求匿名类型对象上必须有一个名为class属性,或者值字典中有一个名为class。...字典中有一个“class”键值不是问题,问题在于对象中带有一个名为class属性。...带有连字符C#属性名是无效,但所有的HTML辅助方法渲染HTML时会将属性名中下划线转换为连字符。...return View(); 5 } 响应视图中,可以使用下面这行代码来显示一个带有专辑价格文本框: @Html.TextBox("Album.Price") 现在渲染出HTML标记如下所示:...使用强类型辅助方法时,只需要为其传递一个lambda表达式来指定要渲染模型属性。表达式模型类型必须为视图指定模型类型(使用@model指令)一致。

    3K30

    Web API--入门--(一)ASP.NET Web API 2(C#)入门

    本教程中使用软件版本 Visual Studio 2013 Web API 2 创建一个Web API项目 本教程中,您将使用ASP.NET Web API创建返回产品列表Web API。...“ 新建ASP.NET项目 ”对话框中,选择“ 空”模板。“添加文件夹核心参考”下,查看Web API。单击确定。 ? 注意 您还可以使用“Web API”模板创建一个Web API项目。...添加模型 一个模型是代表你应用程序中数据对象。ASP.NET Web API可以自动将您模型序列化为JSON,XML或其他格式,然后将序列化数据写入HTTP响应消息正文。...此外,客户端可以通过HTTP请求消息中设置Accept头来指示所需格式。 我们先来创建一个代表产品简单模型。 如果解决方案资源管理器尚未显示,请单击查看菜单,然后选择解决方案资源管理器。...,产品被存储控制器固定数组中。

    4.2K10

    laravel-admin自动生成模块,及相关基础配置方法

    一、模型创建、数据迁移、以及关联模型控制器 $ php artisan make:model Brand -m  //创建模型并生成迁移文件 $ php artisan migrate  //运行迁移...$ php artisan admin:make BrandController --model=App\Brand  //创建关联Brand模型控制器 二、问题:创建模型后,会生成一个临时文件...'); 相当于 UUID $table- year('birth_year'); 相当于 YEAR 三、然后运行迁移创建关联控制器 $ php artisan migrate  //运行迁移 $...php artisan admin:make BrandController --model=App\Brand  //创建关联Brand模型控制器 四、如果数据库表结构需要修改 如二步骤,修改完成...(function (Tree $tree) { $tree- disableCreate(); return $tree; }); } 4,相关model中添加如下方法引用: //引用这两个

    92731

    laravel-admin自动生成模块,及相关基础配置方法

    一、模型创建、数据迁移、以及关联模型控制器 $ php artisan make:model Brand -m  //创建模型并生成迁移文件 $ php artisan migrate  //运行迁移...$ php artisan admin:make BrandController --model=AppBrand  //创建关联Brand模型控制器 二、问题:创建模型后,会生成一个临时文件(php...'); 相当于 UUID $table->year('birth_year'); 相当于 YEAR 三、然后运行迁移创建关联控制器 $ php artisan migrate  //运行迁移 $...新创建: 后他自带: 如果想改成后台自带这种样式,就必须得调用系统自带方法,如下: 1,先在需要添加控制器中引入这些: use EncoreAdminShow; use EncoreAdminTree...(); return $tree; }); } 4,相关model中添加如下方法引用: //引用这两个 use EncoreAdminTraitsAdminBuilder; use EncoreAdminTraitsModelTree

    1.2K00

    - 操作系统底层工作原理

    控制单元 控制单元是整个CPU指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder) 操作控制器OC(Operation...---- CPU缓存结构 现代CPU为了提升执行效率,减少CPU与内存交互(交互影响CPU效率),一般CPU上集成了多级缓存架构,常见为三级缓存结构 L1 Cache,分为数据缓存指令缓存,逻辑独占...空间局部性(Spatial Locality):如果一个存储器位置被引用,那么将来他附近位置也会被引用。 比如顺序执行代码、连续创建两个对象、数组等。...在这两种方式下所用堆栈不一样:用户方式下用是一般堆栈(用户空间堆栈),而内核方式下用是固定大小堆栈(内核空间对战,一般为一个内存页大小),即每个进程与线程其实有两个堆栈,分别运行与用户态与内核态...线程创建、调度管理由内核完成,效率比ULT要慢,比进程操作快。 JVM 属于KLT, 比如一个线程start方法 ,底层就会在OS上开辟一个线程。 ---- 用户线程模型 (ULT) ?

    45520
    领券