首页
学习
活动
专区
工具
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类中都有Artist和ArtistID两个属性,所以对于一个专辑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

89930
  • Asp.Net Web API(四)

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

    1.6K20

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

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

    72820

    【整理】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文件来部署到一个外部的应用服务器上。下面创建了一个孤立的应用,可以相对简单的来演示。

    14430

    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实体中。

    97931

    angularjs 指令详解

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

    2.2K40

    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(线性递归)的成功率比较。

    65290

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

    设计模式之单一职责原则 高内聚和低耦合通常是密不可分的,面向对象的本质是对对象的抽象,类又是对对象抽象结果的具体表达。对于一个类而言应该尽可能的让你成为一个或者一类对象。...这样在表达上就不免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.5K30

    Entity Framework Core 2.0 新特性

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

    3.9K90

    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播放器的模拟输入用于谐波/键混合的音高缩放关键步进器

    91820

    ​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数据位宽,提供一个片选信号...以太网控制器 l在RGMI II模式时,使用MIO引脚和外部PHY。 l额外的接口使用PL内带有额外软核的PL SelectIO和外部PHY。...l在SGMII模式时,使用zynq-7000 PL内的GTX收发器模块。 l改控制器提供可以实现分散-聚集功能的DMA控制器。 1.3.3.

    1.3K10

    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.6K20

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

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

    3K30

    10_异常与中断

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

    1.4K10

    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.3K10

    - 操作系统底层工作原理

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

    46320

    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.3K00
    领券