원클릭으로
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)