ワンクリックで
uno-mvux-records
Use immutable records effectively with MVUX.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use immutable records effectively with MVUX.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Create and use commands in MVUX for user interactions.
Create and use IFeed<T> for async data in MVUX.
Display async feed data with FeedView control.
Create and use IListFeed<T> for reactive collections in MVUX.
Create and use IListState<T> for mutable reactive collections in MVUX.
Use messaging to sync MVUX states with entity changes.
| name | uno-mvux-records |
| description | Use immutable records effectively with MVUX. |
| when_to_use | Use when designing data models/entities for MVUX, understanding why MVUX requires records (immutability), implementing key equality for proper item matching in lists, using `with` expressions to create modified copies, or understanding `partial record` requirements for Model classes. |
| metadata | {"author":"uno-platform","version":"2.4","category":"mvux"} |
Docs lookup: call
uno_platform_docs_search(...)first, thenuno_platform_docs_fetch(sourcePath="…")using thesourcePathfield from a result (a relative.mdpath; add the result'sanchorfor a section). Never pass a URL, a.htmllink, or a hand-built path.
The MVUX overview covers why records are essential:
uno_platform_docs_search("MVUX immutable records data model code generation")
Primary documentation page:
external/uno.extensions/doc/Learn/Mvux/Overview.mdFetch and look for the "Model" and "Creating your own" sections:
uno_platform_docs_fetch(sourcePath="external/uno.extensions/doc/Learn/Mvux/Overview.md")
If the user needs key equality for entity matching (messaging, selection), search for:
uno_platform_docs_search("MVUX key equality entity matching record identifier")
The messaging reference covers how records are matched by key:
external/uno.extensions/doc/Learn/Mvux/Advanced/Messaging.mdIf the user needs help with C# record syntax itself, this is standard C# language knowledge — records provide immutability, value equality, with expressions, and deconstruction.
Record types used as items in MVUX collections (IListFeed<T>, IListState<T>) MUST support key equality via Uno.Extensions.Equality.IKeyEquatable<T>. Without it, MVUX cannot distinguish a modified entity from a different one — every change forces a full list re-render (flickering, lost scroll position, broken animations). For single-value IState<T> / IFeed<T>, key equality matters for messaging-driven entity matching.
For partial record types, IKeyEquatable<T> is auto-generated when the record has a property named Id or Key:
public partial record Person(Guid Id, string Name, int Age);
// IKeyEquatable<Person> is generated automatically — Id is the key
Use [Key] (from Uno.Extensions.Equality or System.ComponentModel.DataAnnotations) when the key property has a different name, or for composite keys:
public partial record OrderLine(
[property: Key] Guid OrderId,
[property: Key] int LineNumber,
string Product,
decimal Price);
Configure which property names are auto-detected as keys:
[assembly: ImplicitKeyEquality("Id", "Key", "EntityId")]
If auto-generation causes issues on a specific type:
[ImplicitKeys(IsEnabled = false)]
public partial record MyItem(Guid Id, string Name);
The interface is exactly Uno.Extensions.Equality.IKeyEquatable<T>. Do not introduce a generic IHasKey<T> or similar invented name — the framework will not recognise it.
partial record (or manually implement IKeyEquatable<T>)KeyEquals returns true when two instances represent the same entity, even if other properties differrecord types (immutable, value equality)partial record with a Model suffix for code generationwith expressions to create modified copies: entity with { Name = "New" }public record Person(string Name, int Age); — concise syntaxpublic partial record MainModel(IMyService Service)